2016-03-23 8 views
5

Ich versuche, mein Telefon zu wecken oder das Licht mit GCM blinken zu bekommen. Ich bekomme die Nachrichten zwar gut, aber es gibt keinen Unterschied bei der Einstellung einer hohen Priorität oder gar keiner. Ich benutze einen Razr Maxx hd zum Testen. Gibt es irgendetwas, was ich hier vermisse?Android - Nachrichten mit hoher Priorität mit Google Cloud Messaging (mit Corona SDK)

<?php 
// API access key from Google API's Console 
define('API_ACCESS_KEY', 'blee'); 

// prep the bundle 
$msg = array 
(
    'body' => 'this is my nice body', 
    'sound' => 'misc/androidnotification.mp3', 

    'custom' => array(
     'route' => '/beee' 
    ) 
); 
$fields = array 
(
    'collapse_key' => 'test', 
    "time_to_live" => 0, 
    'priority' => 'high', 
    'to' => 'mykey',  
    'data'   => $msg, 

); 

$headers = array 
(
    'Authorization: key=' . API_ACCESS_KEY, 
    'Content-Type: application/json' 
); 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send'); 
curl_setopt($ch,CURLOPT_POST, true); 
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($fields)); 
$result = curl_exec($ch); 
curl_close($ch); 
echo $result; 
+0

Erzeugt ein JSON-Objekt in PHP normalerweise ähnlich beim Erstellen eines Arrays? Der Inhalt des Array "$ fields" sieht gut aus, es ist in der [Dokumentation] (https://developers.google.com/cloud-messaging/http-server-ref#send-downstream) angegeben, dass es JSON sein soll . [Priorität festlegen] (https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message) auf "high" sollte ein schlafendes Gerät aktivieren. Stellen Sie sicher, dass GCM die Nachricht sofort liefert – adjuremods

+0

die Header sind "application/json", die es als JSON kodieren wird. Ich mache diese App mit Corona SDK, so dass der normale Java-Code, den Sie in einer nativen Android-App ausführen, für mich nicht verfügbar ist. nicht sicher, ob ich etwas Benachrichtigungscode in der App selbst ausführen muss, um dies zu erreichen. – hamobi

Antwort

3

Aus den beiden folgenden Links

GCM Priority

Optimizing for Doze and App Standby

können Sie, dass für eine hohe Priorität Nachricht ableiten

GCM versucht sofort Meldungen mit hoher Priorität zu liefern, so dass die G CM-Dienst, um ein schlafendes Gerät nach Möglichkeit zu aktivieren und eine Netzwerkverbindung zu Ihrem App-Server zu öffnen.

und für die normale Nachricht

Normale Priorität Nachrichten nicht öffnen Netzwerkverbindungen auf einem Schlaf Gerät und von deren Lieferung kann die Batterie zu schonen verzögert.

und wie Sie von Antwort für die folgende question

sehen kann, kann man nie sicher sein, dass Android-Gerät für Android-Version weniger als Eibisch, für Geräte im Sleep-Modus läuft Eibisch oder höher dort dösen Modus .

erhalten also ein Gerät mit Eibisch oder höher und legt es Modus zu dosieren durch folgende Befehle ausführen

$ adb shell dumpsys battery unplug 
$ adb shell dumpsys deviceidle step 

Sie müssen möglicherweise der zweite Befehl mehr als einmal auszuführen. Wiederholen Sie dies, bis der Gerätezustand in den Leerlauf wechselt.

Versuchen Sie jetzt, die Push-Benachrichtigung mit hoher Priorität und normaler Priorität zu senden. Wenn die Nachrichtenpriorität hoch ist, sollte die Benachrichtigung empfangen werden. Wenn keine Priorität eingestellt oder auf normal eingestellt ist, wird die Benachrichtigung mit einer gewissen Verzögerung oder beim Aufwachen des Geräts gesendet.

+0

danke für die Antwort, aber wie ich sagte, ich benutze ein razr maxx hd. meine Firma stellt mir keine Android-Geräte zum Testen zur Verfügung .. mit einem alten :(Ich denke, das ist Android 4.4.2 – hamobi

+0

Sie können Emulator mit Google Api-Bild zu Testzwecken verwenden –