6

Ich habe Sending push notifications to Android with Azure Notification Hubs tutorial verfolgt, um Push-Benachrichtigungen in meine Android-App mit dem Azure Notification Hub zu implementieren.Android - Azure Push Benachrichtigungen Google FCM

Bisher habe ich ein anderes Lernprogramm verwendet, um den Google Cloud Messaging-Dienst mit Azure Notification Hub zu verwenden. Allerdings konnte ich nur Push-Benachrichtigungen erhalten, wenn ich meine App von Android Studio an mein Gerät gesendet habe. Als ich eine signierte APK erstellte und diese auf meinem Gerät installierte, gab es keine Push-Benachrichtigungen.

Nachdem ich gestern den ganzen Tag versucht habe, es zur Arbeit zu bringen (ProGuard deaktivieren, verschiedene API-Schlüssel ausprobieren usw.), beschloss ich, heute Morgen frisch zu starten. Zu diesem Zeitpunkt wurde mir klar, dass Google die Nutzer jetzt zum Firebase Cloud Messaging leitet, wenn sie in der Cloud Console auf GCM klicken. Also ... Ich habe die Push-Benachrichtigungen mit dem obigen Tutorial und Google FCM in meine App implementiert.

Es funktioniert super .... aber noch einmal, wenn ich ein signiertes APK erstelle und dieses auf meinem Gerät installiere, anstatt die App von Android Studio an mein Gerät zu senden, erhalte ich keine Push-Benachrichtigungen. Azure zeigt, dass der Push erfolgreich gesendet wurde, aber nichts kommt durch.

In meinem Push-Handler habe ich ein Protokoll an die Konsole wie unten in der OnReceive-Methode angezeigt. Das wird gut, wenn ich die App von Android Studio aus starte, und der Push kommt wie es soll. Aber wenn ich signierte apk erstelle und davon laufe, wird die onReceive-Methode nicht aufgerufen und kein Push kommt durch.

@Override 
    public void onReceive(Context context, Bundle bundle) { 

     Log.d("TAG","TRIGGERED"); 

     ctx = context; 
     String nhMessage = bundle.getString("message"); 
     String nhTitle = bundle.containsKey("title") ? bundle.getString("title") : "Title"; 
     String nhBadge = bundle.containsKey("badge") ? bundle.getString("badge") : null ; 
     sendNotification(nhMessage,nhTitle,nhBadge); 
     if (Main.isVisible) { Main.mainActivity.ToastNotify(nhMessage); } 
    } 

Jemand bitte helfen Sie mir. Was vermisse ich????? Liegt es daran, dass ich die APK direkt installiere? Muss es von Google Play heruntergeladen werden? Ansonsten sehe ich nicht, was es sein könnte.

UPDATE

Per Nikita G Vorschlag habe ich die instructions to send a test push from the command line using cURL gefolgt.
Die Antwort, die ich zurückbekomme, ist die folgende (die wie eine Erfolgsmeldung aussieht), aber ich bekomme kein Push auf meinem Gerät.

{"multicast_id":6722521883082447284,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1473693614087201%06fb35f0f9fd7ecd"}]} 

Meine cURL Anfrage sieht so aus, wie das Tutorial zeigt.

curl --header "Authorization: key=XXXXXXXXXXXX" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"fs...Tw:APA...SzXha\"]}" 

UPDATE

Ich habe gerade bemerkt, dass es nicht nur ist, wenn ich ein unterzeichnetes APK verwenden. In Android Studio erzeugen, wenn ich eine APK die Build-APK Option

enter image description here

und installieren Sie dann mit der App-debug.apk Datei auf myappfolder/app/build/Ausgabe/apk/befindet verwenden, die Push Notifications funktionieren immer noch nicht. Sie funktionieren nur, wenn ich über die Option "Ausführen" von Android Studio aus auf mein Gerät sende.

+0

Könnten Sie gehen [Diagnose Richtlinien] (https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-push-notification-fixer /) und wenn nichts hilft, den Beitrag mit dem, was noch passiert, zu aktualisieren? –

+0

@NikitaG. - Danke für den Link, den ich unbedingt machen werde. Werde zurückgeben, was ich finde – Phil

+0

welches Gerät verwenden Sie? –

Antwort

3

Nachdem ich Tage damit verbracht habe herauszufinden, was daraus hervorgeht, stellt sich heraus, dass meine Klasse MyHandler, die für die Handhabung von Pushs verantwortlich ist, nicht öffentlich ist.

Nachdem die Klasse in public geändert wurde, arbeitet push nun mit build und signed apks.

Würde jemanden lieben zu erklären, warum dies nur ein Problem verursachen würde, wenn die App von Apk-Datei installiert wurde, weil dieser Teil mich ratlos ist.

+1

Ich hatte auch die gleiche Erfahrung, aber ich verstehe nicht, wie ein einfacher Qualifier dieses Problem erzeugen kann !! –

1

Eine wichtige Methode, um in dieser Art von Problemen zu folgen, wenn Sie zuerst versuchen zu verstehen, ob das Problem auf der Seite Notification Hubs oder auf der Seite PNS (FCM in diesem Fall) ist.

Ein Weg, es zu tun ist, zuerst durch die ANH diagnosis guidelines zu gehen. Wenn das Problem immer noch nicht behoben ist, kann es hilfreich sein, eine Nachricht direkt über das PNS zu senden, um zu sehen, ob das funktioniert oder nicht. (Im Fall von FCM können Sie send a test push from the command line.)

+1

Vielen Dank für Ihre Hilfe. Es stellte sich heraus, dass mir der Modifikator "public" in meiner Push-Handler-Klasse fehlte, aber ich hätte ihn nie ohne Ihre Hilfe gefunden, wenn Sie andere Möglichkeiten eliminiert hätten. – Phil

+0

Froh, dass Sie es herausgefunden haben. Diese Dinge scheinen einfach zu sein, wenn Sie sie bereits gelöst haben, aber extrem schwer zu finden sind. Gut gemacht! –

Verwandte Themen