VERTRIEB: 1-800-867-1380

Lernprogramm zu Service Bus-Benachrichtigungshubs (Android-Apps)

Windows Azure Service Bus-Benachrichtigungshubs sind Service Bus-Entitäten, die es Ihnen ermöglichen, Gerätepushbenachrichtigungen über Anwendungsplattformen von Drittanbietern zu senden. Dabei handelt es sich z. B. um die folgenden Plattformen:

  1. Windows Push Notification Services (WNS) für Windows 8.

  2. Apple Push Notification Service (APNs).

  3. Google Cloud Messaging Service (GCM) für Android.

In diesem Lernprogramm wird das Einrichten einer Android-Anwendung und einer einfachen ASP.NET MVC-Anwendung beschrieben, die eine systemeigene Benachrichtigung mittels Push über GCM sendet.

noteHinweis
Benachrichtigungshubs sind in Windows Azure Service Bus als Vorschaufunktion seit Januar 2012 verfügbar. Die allgemeine Verfügbarkeit wird Mitte 2013 erwartet.

noteHinweis
Aufgrund der an Benachrichtigungshubs vorgenommenen Verbesserungen funktioniert das vor April 2013 heruntergeladene SDK nicht mit den neuen Benachrichtigungshubs. Ebenso funktioniert das aktuelle SDK nicht mit Benachrichtigungshubs, die vor April 2013 erstellt wurden. Bitte verwenden Sie die neuen Benachrichtigungshubs mit dem neuen SDK, um alle Vorteile der neuen Funktionen nutzen zu können, z. B. optimistische Parallelitätssteuerung. Die Unterstützung für Benachrichtigungshubs, die vor April 2013 erstellt wurden, wird beendet, wenn Benachrichtigungshubs in die allgemeine Verfügbarkeit übergehen.

Unterstützung für Microsoft Push Notification Service (MPNS) für Windows Phone wird ebenfalls bald verfügbar sein.

Ein Thema mit einer ausführlichen Beschreibung So wird es gemacht: Service Bus-Benachrichtigungshubs (Android-Apps) sowie eine Übersicht Windows Azure Service Bus-Benachrichtigungshubs ist ebenfalls verfügbar. Den Themenbereich zum Verwenden von Benachrichtigungshubs aus Windows Store- und iOS-Apps finden Sie unter den Themen So wird es gemacht: Service Bus-Benachrichtigungshubs (Windows Store-Apps) bzw. So wird es gemacht: Service Bus-Benachrichtigungshubs (iOS-Apps).

Voraussetzungen

  1. Service Bus .NET Preview SDK. Das SDK ist ein NuGet-Paket, das Funktionen von Service Bus Preview enthält. Sie können es hier herunterladen. Das Paket trägt den Namen ServiceBus-Previewfunktionen und enthält eine neue Service Bus-Bibliothek namens Microsoft.ServiceBus.Preview.dll. Damit Sie die Benachrichtigungshubs verwenden können, müssen Sie diese Bibliothek anstelle der Produktionsversion (Microsoft.ServiceBus.dll) verwenden.

  2. Android SDK (optional Eclipse), kann hier heruntergeladen werden.

  3. Android-Benachrichtigungshub SDK. Sie können dieses SDK hier herunterladen.

Erstellen eines Google-API-Projekts und Generieren eines API-Schlüssels

So erstellen Sie ein Google-API-Projekt

  1. Öffnen Sie die Google-APIs-Konsolenseite.

  2. Wenn Sie bereits über ein Projekt verfügen und ein neues Projekt erstellen möchten, klicken Sie auf Andere Projekte, und klicken Sie dann auf Erstellen. Wenn dies Ihr erstes Google-API-Projekt ist, erstellen Sie das Projekt, indem Sie auf Projekt erstellen klicken.

    Pushbenachrichtigungen
  3. Ihre Browser-URL ändert sich in eine URL, die der folgenden ähnelt: https://code.google.com/apis/console/#project:1234567890.

  4. Notieren Sie sich die Zahl hinter #project (z. B. 1234567890 im Beispiel oben). Diese Angabe ist Ihre GCM-Absender-ID.

Aktivieren von GCM und Generieren eines API-Serverschlüssels:

  1. Klicken Sie auf der Hauptseite der Google-APIs-Konsole auf Dienst.

  2. Schalten Sie Google Cloud Messaging auf Ein um, und stimmen Sie den Vertragsbedingungen zu.

  3. Klicken Sie auf der Hauptseite der Google-APIs-Konsole auf API-Zugriff.

  4. Klicken Sie auf Neuen Serverschlüssel erstellen, und klicken Sie dann auf Erstellen.

    noteHinweis
    Es ist nicht erforderlich, die Positivliste der IP-Adressen mit Daten aufzufüllen.

  5. Notieren Sie sich den API-Schlüssel, den Sie erstellt haben.

Erstellen eines Service Bus-Benachrichtigungshubs

Erstellen Sie mithilfe des Windows Azure-Verwaltungsportals einen Benachrichtigungshub, und konfigurieren Sie ihn so, dass Pushbenachrichtigungen an eine Android-Anwendung gesendet werden.

  1. Melden Sie sich am Windows Azure-Verwaltungsportal an.

  2. Klicken Sie in der unteren linken Ecke auf Neu.

  3. Klicken Sie auf App-Dienste, auf Service Bus, auf Benachrichtigungshub und dann auf Schnellerfassung.

    Pushbenachrichtigungen
  4. Wählen Sie einen Namen für den Benachrichtigungshub, eine Region und einen Namespace aus, in dem dieser Benachrichtigungshub erstellt werden soll (wenn keine Namespaces verfügbar sind, wird ein neuer Namespace mit dem angegebenen Namen bereitgestellt). Klicken Sie auf das Häkchen.

  5. Klicken Sie nun auf der Registerkarte Service Bus im linken Navigationsbereich auf den erstellten Namespace. Der Benachrichtigungshub sollte in der Liste angezeigt werden.

    Pushbenachrichtigungen
  6. Klicken Sie auf den Benachrichtigungshub, und klicken Sie dann oben auf die Registerkarte Konfigurieren.

    Pushbenachrichtigungen
  7. Fügen Sie den zuvor abgerufenen GCM API-Schlüssel ein, und klicken Sie dann auf Speichern.

Herstellen einer Verbindung mit der App

Wenn Sie noch nicht über ein Android-Projekt verfügen, erstellen Sie ein neues Projekt.

  1. Erstellen Sie in Eclipse ADT ein neues Android-Projekt (Datei, Neu, Android-Anwendung), und legen Sie dann Mindestens erforderliches SDK auf API 8: Android 2.2 (Froyo).

    Push
  2. Befolgen Sie die Anweisungen des Assistenten, und behalten Sie dabei die Standardeinstellungen (z. B. das Erstellen einer leeren Aktivität) bei.

    Push
  3. Öffnen Sie den Android SDK-Manager aus der oberen Symbolleiste von Eclipse. Klicken Sie auf Google-APIs, Google Cloud Messaging für Android-Bibliothek und Google Play Service wie unten gezeigt. Klicken Sie auf Pakete installieren. Starten Sie Eclipse neu.

    noteHinweis
    Anmerkung: Merken Sie sich den SDK-Pfad, der oben im SDK-Manager angezeigt wird.

    Push
  4. Navigieren Sie zum SDK-Pfad, und kopieren Sie im Paket-Explorer dann die folgenden Dateien in das Verzeichnis libs Ihres Projekts: \extras\google\gcm\gcm-client\dist\gcm.jar, \extras\google\google_play_services\libproject\google-play-services_lib\libs\google-play-services.jar.

  5. Laden Sie das Android-Benachrichtigungshub SDK hier herunter. Extrahieren Sie die ZIP-Datei, und kopieren Sie dann im Paket-Explorer die Datei notificationhubs\notification-hubs-sdk.jar in das Verzeichnis libs Ihres Projekts.

  6. Klicken Sie im Paket-Explorer mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Eigenschaften. Klicken Sie dann im linken Bereich auf Android. Aktivieren Sie das Ziel Google-APIs. Klicken Sie auf OK.

    Push

    Richten Sie nun die Anwendung für den Abruf einer registartionId aus GCM ein. Verwenden Sie die registrationId zum Registrieren der App-Instanz für den Benachrichtigungshub.

  7. Fügen Sie in der Datei AndroidManifest.xml die folgende Zeile unter dem Element <uses-sdk/> hinzu. Stellen Sie sicher, <your package> durch das Paket zu ersetzen, das Sie für Ihre App in Schritt 1 ausgewählt haben (com.microsoft.testnotificationhubs in diesem Beispiel).

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <permission android:name="<your package>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="<your package>.permission.C2D_MESSAGE"/>
    
  8. Fügen Sie in der Klasse MainActivity die folgenden privaten Elemente hinzu.

    noteHinweis
    Stellen Sie sicher, dass Sie Ihre weiter oben abgerufene Absender-ID verwenden.

    private String SENDER_ID = "<your project number>";
    private GoogleCloudMessaging gcm;
    private NotificationHub hub;
    
  9. Rufen Sie aus dem Windows Azure-Verwaltungsportal die Verbindungszeichenfolge mit Lauschzugriff ab, indem Sie zu Ihrem Benachrichtigungshubdashboard navigieren und dann auf Verbindungsinformationen klicken.

    Push
  10. Fügen Sie in der Methode OnCreate den folgenden Code hinzu, und stellen Sie sicher, dass Sie die Platzhalter durch Ihre weiter oben abgerufene Verbindungszeichenfolge mit Lauschzugriff und den Namen Ihres Benachrichtigungshubs ersetzen.

    gcm = GoogleCloudMessaging.getInstance(this);
            
    String connectionString = "<your listen access connection string>";
    hub = new NotificationHub("<your notification hub name>", connectionString, this);
    
    registerWithNotifiationHub();
    
  11. Erstellen Sie in MainActivity.java die folgende Methode:

    @SuppressWarnings("unchecked")
    private void registerWithNotificationHubs() {
       new AsyncTask() {
          @Override
          protected Object doInBackground(Object... params) {
             try {
                String regid = gcm.register(SENDER_ID);
                hub.register(regid);
             } catch (Exception e) {
                return e;
             }
             return null;
         }
       }.execute(null, null, null);
    }
    
  12. Da Android keine Benachrichtigungen anzeigt, müssen Sie Ihren eigenen Empfänger schreiben. Fügen Sie in AndroidManifest.xml das folgende Element im Element <application/> hinzu.

    noteHinweis
    Ersetzen Sie den Platzhalter durch Ihren Paketnamen.

    <receiver
        android:name=".MyBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
       <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="<your package name>" />
       </intent-filter>
    </receiver>
    
  13. Erstellen Sie eine neue Klasse (klicken Sie im Paket-Explorer mit der rechten Maustaste auf Ihr App-Paket und auf Neu, und klicken Sie dann auf Klasse). Nennen Sie die Klasse MyBroadcastReceiver (abgeleitet von android.content.BroadcastReceiver).

    Push
  14. Fügen Sie MyBroadcastReceiver den folgenden Code hinzu:

    public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        Context ctx;
    
    @Override
    public void onReceive(Context context, Intent intent) {
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
            ctx = context;
            String messageType = gcm.getMessageType(intent);
            if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
                sendNotification("Send error: " + intent.getExtras().toString());
            } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
                sendNotification("Deleted messages on server: " + 
                        intent.getExtras().toString());
            } else {
                sendNotification("Received: " + intent.getExtras().toString());
            }
            setResultCode(Activity.RESULT_OK);
    }
    
    private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager)
                  ctx.getSystemService(Context.NOTIFICATION_SERVICE);
          
          PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
              new Intent(ctx, MainActivity.class), 0);
          
          NotificationCompat.Builder mBuilder =
              new NotificationCompat.Builder(ctx)
              .setSmallIcon(R.drawable.ic_launcher)
              .setContentTitle("Notification Hub Demo")
              .setStyle(new NotificationCompat.BigTextStyle()
                         .bigText(msg))
              .setContentText(msg);
          
         mBuilder.setContentIntent(contentIntent);
         mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
    

Führen Sie die App im Emulator aus.

Wenn Sie diese App im Emulator ausführen, stellen Sie sicher, dass Sie ein virtuelles Android-Gerät (Android Virtual Device, AVD) verwenden, das Google-APIs unterstützt.

  1. Klicken Sie unter Fenster auf Manager für virtuelle Android-Geräte, wählen Sie Ihr Gerät aus, und klicken Sie dann auf Bearbeiten.

    Push
  2. Wählen Sie Google-APIs unter Ziel aus, und klicken Sie dann auf OK.

    Push
  3. Klicken Sie auf der oberen Symbolleiste auf Ausführen, und wählen Sie dann Ihre App aus. Auf diese Weise wird der Emulator gestartet und die App ausgeführt.

  4. Die App ruft die registrationId aus GCM ab und führt die Registrierung mit dem Benachrichtigungshub aus.

noteHinweis
Damit Sie Pushbenachrichtigungen empfangen können, müssen Sie ein Google-Konto auf Ihrem virtuellen Android-Gerät einrichten (navigieren Sie im Emulator zu Einstellungen, und klicken Sie dann auf Konto hinzufügen). Stellen Sie außerdem sicher, dass der Emulator mit dem Internet verbunden ist.

Senden einer Benachrichtigung mit .NET

Zum Erstellen und Senden von Benachrichtigungen erstellen Sie eine einfache Konsolenanwendung. Sie können diesen Code in einer normalen Webanwendung erneut verwenden.

Wenn Sie Visual Studio Express 2012 für Windows 8 verwenden, navigieren Sie zu Visual Studio Express 2012 für Windows Desktop, um eine Konsolenanwendung zu erstellen. Sie können auch Visual Studio Express 2012 für das Web verwenden, um eine einfache Web Forms-App zu erstellen.

Fügen Sie Verweise auf Folgendes hinzu:

  • System.Runtime.Serialization.dll

  • System.Runtime.Serialization.dll

Wenn Sie eine Konsolenanwendung erstellen, verwenden Sie den folgenden Code als Main()-Funktion. Ersetzen Sie die Platzhalter durch die Verbindungszeichenfolge mit Vollzugriff, die Sie aus dem Windows Azure-Verwaltungsportal kopieren können, und durch den Namen Ihres Benachrichtigungshubs.

Push

Beachten Sie das spezifische GCM JSON-Format, das hier ausführlich beschrieben wird.

static void Main(string[] args)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString(<your connection string with full access>, "<your notification hub name>");
    hubClient.SendGcmNativeNotification("{ \"data\" : {\"msg\":\"Hello from Windows Azure!\"}}");
}

Wenn 10.000 Clientinstanzen registriert sind, erstellt und sendet der Benachrichtigungshub 10.000 Benachrichtigungskopien und führt die erforderliche Fehlerbehandlung und Registriertungsverwaltung aus.

Push

Senden einer Benachrichtigung mit Node.js

Installieren Sie Node.js und npm auf Ihrem Computer.

  1. Installieren Sie das Knotenmodul azure.

    npm install azure
    
  2. Geben Sie in einem Knotenskript (oder einer interaktiven Konsole) Folgendes ein:

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.gcm.send(null, '{"data":{"msg":"Hello from node.js!"}}');
    

Wenn 10.000 Clientinstanzen registriert sind, erstellt und sendet der Benachrichtigungshub 10.000 Benachrichtigungskopien und führt die erforderliche Fehlerbehandlung und Registriertungsverwaltung aus.

Senden einer Benachrichtigung mit Mobile Dienste

Mit Mobile Dienste können Sie schnell ein Back-End für Ihre Anwendung erstellen. Sie können Benachrichtigungshubs aus Mobile Dienste zum Übertragen von Nachrichten an Millionen von Geräten oder zum einfachen Erstellen von Interessengruppen mithilfe von Tags verwenden.

Dieses Lernprogramm verwendet einen geplanten Auftrag. Sie können jedoch Benachrichtigungen aus einem beliebigen serverseitigen Skript in Ihrem mobilen Dienst verwenden.

  1. Erstellen Sie einen neuen mobilen Dienst, oder melden Sie sich bei Ihrem eigenen Dienst an. Den Themenbereich zu mobilen Diensten finden Sie hier.

  2. Klicken Sie auf der oberen Leiste auf Planer.

    Pushbenachrichtigungen
  3. Erstellen Sie einen neuen geplanten Auftrag, fügen Sie einen Namen ein, und klicken Sie dann auf On Demand.

    Pushbenachrichtigungen
  4. Nachdem der Auftrag erstellt wurde, klicken Sie auf den Namen des Auftrags. Klicken Sie dann auf der oberen Leiste auf Skript.

  5. Fügen Sie das folgende Skript ein. Ersetzen Sie unbedingt die Platzhalter durch den Namen Ihres Benachrichtigungshubs und die Verbindungszeichenfolge für DefaultFullSharedAccessSignature, die Sie in einem früheren Schritt abgerufen haben. Klicken Sie auf Speichern.

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.gcm.send(
            null,
            '{
                "data":
                {
                   "msg" : "Hello from Mobile Services!"
                }
            }',
            function (error)
            {
                if (!error) {
                    console.warn("Notification successful");
                }
            }
        );
    }
    
  6. Klicken Sie auf der unteren Leiste auf Einmal ausführen.

noteHinweis
Mobile Dienste verwenden das Windows Azure SDK für Node.js für den Zugriff auf Benachrichtigungshubs. Den Themenbereich zum Windows Azure SDK für Node.js mit Benachrichtigungshubs finden Sie hier.

Wenn 10.000 Clientinstanzen registriert sind, erstellt und sendet der Benachrichtigungshub wie oben beschrieben 10.000 Benachrichtigungskopien und führt die erforderliche Fehlerbehandlung und Registriertungsverwaltung aus. Weitere Informationen zum Senden von Benachrichtigungen für mehrere Plattformen, zur Zielgruppenadressierung von Benutzern und Interessengruppen sowie zu anderen erweiterten Funktionen finden Sie im ausführlichen Thema So wird es gemacht: Service Bus-Benachrichtigungshubs (Windows Store-Apps) und in der Übersicht Windows Azure Service Bus-Benachrichtigungshubs.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

Anzeigen:
© 2014 Microsoft