Öğretici: Firebase SDK sürüm 0,6 kullanarak Android cihazlarına anında iletme bildirimleri gönderme

Bu öğreticide, bir Android uygulamasına anında iletme bildirimleri göndermek için Azure Notification Hubs ve Firebase Cloud Messaging (FCM) SDK sürüm 0,6 ' nin nasıl kullanılacağı gösterilmektedir. Bu öğreticide Firebase Cloud Messaging (FCM) kullanarak anında iletme bildirimleri alan bir Android uygulaması oluşturacaksınız.

Bu öğreticinin tamamlanan kodu GitHub ' danindirilebilir.

Bu öğreticide, aşağıdaki adımları gerçekleştireceksiniz:

  • Android Studio projesi oluşturma.
  • Firebase Cloud Messaging’i destekleyen bir Firebase projesi oluşturma.
  • Bir hub oluşturun.
  • Uygulamanızı hub 'a bağlayın.
  • Uygulamayı test etme.

Önkoşullar

Bu öğreticiyi tamamlamak için etkin bir Azure hesabınızın olması gerekir. Bir hesabınız yoksa, yalnızca birkaç dakika içinde ücretsiz bir deneme hesabı oluşturabilirsiniz. Ayrıntılı bilgi için bkz. Azure Ücretsiz Deneme Sürümü.

Ayrıca aşağıdaki öğeler de gereklidir:

  • Android Studio en son sürümü
  • Firebase Cloud Messaging için Android 2,3 veya üzeri
  • Firebase Cloud Messaging için Google Repository düzeltme 27 veya üzeri
  • Firebase Cloud Messaging için 9.0.2 veya üzeri Google Play Hizmetleri

Bu öğreticiyi tamamlamak, Android uygulamalarına yönelik diğer tüm Notification Hubs öğreticileri gerçekleştirmek için bir önkoşuldur.

Android Studio Projesi oluşturma

  1. Android Studio başlatın.
  2. Dosya' yı seçin, Yeni üzerine gelin ve ardından Yeni proje' yi seçin.
  3. Projenizi seçin sayfasında boş etkinlik' i seçin ve ardından İleri' yi seçin.
  4. Projenizi yapılandırın sayfasında, aşağıdaki adımları uygulayın:
    1. Uygulama için bir ad girin.

    2. Proje dosyalarının kaydedileceği bir konum belirtin.

    3. Son'u seçin.

      Projenizi yapılandırma)

FCM’yi destekleyen bir Firebase projesi oluşturma

  1. Firebase konsolunda oturum açın. Henüz bir tane yoksa yeni bir Firebase projesi oluşturun.

  2. Projenizi oluşturduktan sonra Firebase’i Android uygulamanıza ekleyin’i seçin.

    Firebase’i Android uygulamanıza ekleyin

  3. Android uygulamanıza Firebase ekleme sayfasında, aşağıdaki adımları uygulayın:

    1. Android paket adı için uygulamanızın Build. Gradle dosyasına ApplicationId değerini kopyalayın. Bu örnekte, com.fabrikam.fcmtutorial1app .

      Paket adını belirtin

    2. Uygulamayı kaydet' i seçin.

  4. google-services.jskarşıdan yükle' yi seçin, dosyayı projenizin uygulama klasörüne kaydedin ve sonra İleri' yi seçin.

    google-services.jsindir

  5. Android Studio projenizde aşağıdaki yapılandırma değişikliklerini yapın.

    1. Proje düzeyi Build. Gradle dosyanızda ( < Project > /Build.Gradle), Bağımlılıklar bölümüne aşağıdaki ifadeyi ekleyin.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Uygulama düzeyi Build. Gradle dosyanızda ( < Project > / < App-Module > /Build.Gradle), aşağıdaki deyimlerini Bağımlılıklar bölümüne ekleyin.

      implementation 'com.google.firebase:firebase-core:16.0.8'
      implementation 'com.google.firebase:firebase-messaging:17.3.4'
      
    3. Bağımlılıklar bölümünden sonra uygulama düzeyi Build. Gradle dosyasının sonuna aşağıdaki satırı ekleyin.

      apply plugin: 'com.google.gms.google-services'
      
    4. Araç çubuğunda Şimdi Eşitle ' yi seçin.

      Build. Gradle yapılandırma değişiklikleri

  6. İleri’yi seçin.

  7. Bu adımı atla' yı seçin.

    Son adımı atlayın

  8. Firebase konsolunda projenizin dişli simgesini seçin. Sonra, Proje Ayarları’nı seçin.

    Proje Ayarları’nı seçin

  9. Dosyadaki google-services.jsAndroid Studio projenizin uygulama klasörüne indirmediyseniz, bu sayfada bunu yapabilirsiniz.

  10. En üstteki bulut mesajlaşma sekmesine geçin.

  11. Daha sonra kullanmak üzere sunucu anahtarını kopyalayın ve kaydedin. Bu değeri, hub 'ınızı yapılandırmak için kullanırsınız.

Hub yapılandırma

  1. Azure Portal’ında oturum açın.

  2. Sol taraftaki menüden tüm hizmetler ' i seçin ve ardından Mobil bölümünde Notification Hubs ' yi seçin. Hizmet adının yanındaki yıldız simgesini seçerek hizmeti Sol menüdeki Sık Kullanılanlar bölümüne ekleyin. Sık kullanılanlara Notification Hubs ekledikten sonra, soldaki menüden seçin.

    Azure portal Notification Hubs seçin

  3. Notification Hubs sayfasında, araç çubuğunda Oluştur ' u seçin.

    Notification Hubs-araç çubuğu düğmesi Ekle

  4. Bildirim Hub 'ı sayfasındaki temel bilgiler sekmesinde, aşağıdaki adımları uygulayın:

    1. Abonelik' da, kullanmak istediğiniz Azure aboneliğinin adını seçin ve ardından var olan bir kaynak grubunu seçin veya yeni bir tane oluşturun.

    2. Ad alanı ayrıntılarında yeni ad alanı için benzersiz bir ad girin.

    3. Bir ad alanı bir veya daha fazla Bildirim Hub 'ı içeriyorsa, Bildirim Hub 'ı ayrıntılarında Hub için bir ad yazın. Veya açılan listeden mevcut bir ad alanını seçin.

    4. Konum açılan liste kutusundan bir değer seçin. Bu değer, hub 'ı oluşturmak istediğiniz konumu belirtir.

    5. Oluştur’u seçin.

      Azure portalı - Bildirim hub'ı özelliklerini ayarlama

  5. Bildirimleri (zil simgesi) seçin ve ardından Kaynağa Git' i seçin. Ayrıca Notification Hubs sayfasında listeyi yenileyebilir ve hub 'ınızı seçebilirsiniz.

    Azure portal-kaynağa git

  6. Listeden Erişim İlkeleri'ni seçin. İki bağlantı dizesinin sizin için kullanılabilir olduğunu unutmayın. Anında iletme bildirimlerini işlemek için onlara daha sonra ihtiyacınız olacak.

    Önemli

    Uygulamanızda Defaultfullsharedaccesssignature ilkesini kullanmayın. Bu, yalnızca arka uçta kullanılmak üzere tasarlanmıştır.

    Azure portalı - Bildirim hub'ı bağlantı dizeleri

Hub için Firebase Cloud Messaging ayarlarını yapılandırma

  1. Sol bölmede, ayarlar altında Google (GCM/FCM) öğesini seçin.

  2. Daha önce kaydettiğiniz FCM projesinin sunucu anahtarını girin.

  3. Araç çubuğunda Kaydet' i seçin.

    Azure Notification Hub 'ı-Google (FCM)

  4. Azure portal,, hub 'ın başarıyla güncelleştirildiği uyarılarda bir ileti görüntüler. Kaydet düğmesi devre dışı bırakıldı.

Hub 'ınız şimdi Firebase Cloud Messaging ile çalışacak şekilde yapılandırılmıştır. Ayrıca, bir cihaza bildirim göndermek ve bildirim almak için bir uygulamayı kaydetmek için gerekli olan bağlantı dizelerine sahip olursunuz.

Uygulamanızı Bildirim Hub 'ına bağlama

Projeye Google Play hizmetlerini ekleme

  1. Android Studio menüsünde Araçlar ' ı seçin ve ardından SDK yöneticisi' ni seçin.

  2. Projenizde kullanılan Android SDK hedef sürümünü seçin. Ardından Paket ayrıntılarını göster' i seçin.

    Android SDK Yöneticisi-hedef sürümü seçin

  3. Zaten yüklenmemişse Google API 'leri seçin.

    Android SDK Manager-Google API 'Leri seçildi

  4. SDK Tools sekmesine geçin. Google Play Hizmetleri zaten yüklemediyseniz, aşağıdaki görüntüde gösterildiği gibi Google Play hizmetleri seçin. Ardından, yüklemek için Uygula ' yı seçin. SDK yolunun sonraki bir adım için olduğunu unutmayın.

    Android SDK Manager-Google Play Hizmetleri seçildi

  5. Değişikliği Onayla iletişim kutusunu görürseniz Tamam' ı seçin. Bileşen yükleyicisi istenen bileşenleri yüklüyor. Bileşenler yüklendikten sonra son ' u seçin.

  6. Yeni projeler Için ayarlar iletişim kutusunu kapatmak için Tamam ' ı seçin.

  7. AndroidManifest.xml dosyasını açın ve ardından aşağıdaki etiketi uygulama etiketine ekleyin.

    <meta-data android:name="com.google.android.gms.version"
         android:value="@integer/google_play_services_version" />
    

Azure Notification Hubs kitaplıklarını ekleme

  1. Uygulamanın Build. Gradle dosyasında, bağımlılıklar bölümüne aşağıdaki satırları ekleyin.

    implementation 'com.microsoft.azure:notification-hubs-android-sdk:0.6@aar'
    
  2. Bağımlılıklar bölümünden sonra aşağıdaki depoyu ekleyin.

    repositories {
        maven {
            url "https://dl.bintray.com/microsoftazuremobile/SDK"
        }
    }
    

Google Firebase desteği ekleme

  1. Uygulamanın Build. Gradle dosyasında, zaten mevcut değilse, Bağımlılıklar bölümüne aşağıdaki satırları ekleyin.

    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    
  2. Henüz orada değilse, dosyanın sonuna aşağıdaki eklentiyi ekleyin.

    apply plugin: 'com.google.gms.google-services'
    
  3. Araç çubuğunda Şimdi Eşitle ' yi seçin.

AndroidManifest.xml dosyasını güncelleştirme

  1. FCM kayıt belirtecinizi aldıktan sonra Azure Notification Hubs kaydetmekiçin bunu kullanırsınız. Adlandırılmış bir kullanarak bu kaydı arka planda destekleyebilirsiniz IntentService RegistrationIntentService . Bu hizmet, FCM kayıt belirtecinizi de yeniler. Ayrıca, bir alt sınıfı olarak adlandırılan bir sınıf oluşturur FirebaseService FirebaseMessagingService ve onMessageReceived bildirimleri almak ve işlemek için yöntemi geçersiz kılar.

    Aşağıdaki hizmet tanımını AndroidManifest.xml dosyasında <application> etiketinin içine ekleyin.

    <service
        android:name=".RegistrationIntentService"
        android:exported="false">
    </service>
    <service
        android:name=".FirebaseService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    
  2. Aşağıdaki gerekli FCM ile ilgili izinleri etiketinin altına ekleyin </application> .

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    

Kod Ekle

  1. Proje görünümünde, uygulama > src > Main > Java' yı genişletin. Java altındaki paket klasörünüze sağ tıklayın, Yeni' yi seçin ve ardından Java sınıfı' nı seçin. Ad için Notificationsettings yazın ve ardından Tamam' ı seçin.

    Aşağıdaki kodda NotificationSettings sınıfı için bu üç yer tutucuyu güncelleştirdiğinizden emin olun:

    • HubListenConnectionString: Hub'ınız için DefaultListenAccessSignature bağlantı dizesi. [Azure Portal]hub 'ınızdaki erişim ilkeleri ' ne tıklayarak bu bağlantı dizesini kopyalayabilirsiniz.

    • Hubname: [Azure Portal]hub sayfasında görünen hub 'ınızın adını kullanın.

      NotificationSettings kodu:

      public class NotificationSettings {
          public static String HubName = "<Your HubName>";
          public static String HubListenConnectionString = "<Enter your DefaultListenSharedAccessSignature connection string>";
      }
      

      Önemli

      Devam etmeden önce hub 'ınızın adını ve Defaultlistensharedaccesssignature adını girin.

  2. RegistrationIntentService adlı projenize başka bir yeni sınıf ekleyin. Bu sınıf, IntentService arabirimini uygular. Ayrıca , FCM belirtecini yenilemeyi ve Bildirim Hub 'ına kaydetmeyide gerçekleştirir.

    Bu sınıf için aşağıdaki kod kullanın.

    import android.app.IntentService;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.preference.PreferenceManager;
    import android.util.Log;
    import com.google.android.gms.tasks.OnSuccessListener;
    import com.google.firebase.iid.FirebaseInstanceId;
    import com.google.firebase.iid.InstanceIdResult;
    import com.microsoft.windowsazure.messaging.NotificationHub;
    import java.util.concurrent.TimeUnit;
    
    public class RegistrationIntentService extends IntentService {
    
        private static final String TAG = "RegIntentService";
        String FCM_token = null;
    
        private NotificationHub hub;
    
        public RegistrationIntentService() {
            super(TAG);
        }
    
        @Override
        protected void onHandleIntent(Intent intent) {
    
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
            String resultString = null;
            String regID = null;
            String storedToken = null;
    
            try {
                FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() { 
                    @Override 
                    public void onSuccess(InstanceIdResult instanceIdResult) { 
                        FCM_token = instanceIdResult.getToken(); 
                        Log.d(TAG, "FCM Registration Token: " + FCM_token); 
                    } 
                }); 
                TimeUnit.SECONDS.sleep(1);
    
                // Storing the registration ID that indicates whether the generated token has been
                // sent to your server. If it is not stored, send the token to your server.
                // Otherwise, your server should have already received the token.
                if (((regID=sharedPreferences.getString("registrationID", null)) == null)){
    
                    NotificationHub hub = new NotificationHub(NotificationSettings.HubName,
                            NotificationSettings.HubListenConnectionString, this);
                    Log.d(TAG, "Attempting a new registration with NH using FCM token : " + FCM_token);
                    regID = hub.register(FCM_token).getRegistrationId();
    
                    // If you want to use tags...
                    // Refer to : https://azure.microsoft.com/documentation/articles/notification-hubs-routing-tag-expressions/
                    // regID = hub.register(token, "tag1,tag2").getRegistrationId();
    
                    resultString = "New NH Registration Successfully - RegId : " + regID;
                    Log.d(TAG, resultString);
    
                    sharedPreferences.edit().putString("registrationID", regID ).apply();
                    sharedPreferences.edit().putString("FCMtoken", FCM_token ).apply();
                }
    
                // Check to see if the token has been compromised and needs refreshing.
               else if (!(storedToken = sharedPreferences.getString("FCMtoken", "")).equals(FCM_token)) {
    
                    NotificationHub hub = new NotificationHub(NotificationSettings.HubName,
                            NotificationSettings.HubListenConnectionString, this);
                    Log.d(TAG, "NH Registration refreshing with token : " + FCM_token);
                    regID = hub.register(FCM_token).getRegistrationId();
    
                    // If you want to use tags...
                    // Refer to : https://azure.microsoft.com/documentation/articles/notification-hubs-routing-tag-expressions/
                    // regID = hub.register(token, "tag1,tag2").getRegistrationId();
    
                    resultString = "New NH Registration Successfully - RegId : " + regID;
                    Log.d(TAG, resultString);
    
                    sharedPreferences.edit().putString("registrationID", regID ).apply();
                    sharedPreferences.edit().putString("FCMtoken", FCM_token ).apply();
                }
    
                else {
                    resultString = "Previously Registered Successfully - RegId : " + regID;
                }
            } catch (Exception e) {
                Log.e(TAG, resultString="Failed to complete registration", e);
                // If an exception happens while fetching the new token or updating registration data
                // on a third-party server, this ensures that we'll attempt the update at a later time.
            }
    
            // Notify UI that registration has completed.
            if (MainActivity.isVisible) {
                MainActivity.mainActivity.ToastNotify(resultString);
            }
        }
    }
    
  3. MainActivitySınıfında, import sınıf bildiriminin üzerine aşağıdaki deyimlerini ekleyin.

    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GoogleApiAvailability;
    import android.content.Intent;
    import android.util.Log;
    import android.widget.TextView;
    import android.widget.Toast;
    
  4. Aşağıdaki üyeleri sınıfının üst kısmına ekleyin. Google Play Hizmetleri'nin kullanılabilirliğini Google tarafından önerildiği şekilde denetlemek için bu alanları kullanırsınız.

    public static MainActivity mainActivity;
    public static Boolean isVisible = false;
    private static final String TAG = "MainActivity";
    private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
    
  5. MainActivitySınıfında Google Play hizmetleri kullanılabilirliğini denetlemek için aşağıdaki yöntemi ekleyin.

    /**
    * Check the device to make sure it has the Google Play Services APK. If
    * it doesn't, display a dialog box that enables  users to download the APK from
    * the Google Play Store or enable it in the device's system settings.
    */
    
    private boolean checkPlayServices() {
        GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
        int resultCode = apiAvailability.isGooglePlayServicesAvailable(this);
        if (resultCode != ConnectionResult.SUCCESS) {
            if (apiAvailability.isUserResolvableError(resultCode)) {
                apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
                        .show();
            } else {
                Log.i(TAG, "This device is not supported by Google Play Services.");
                ToastNotify("This device is not supported by Google Play Services.");
                finish();
            }
            return false;
        }
        return true;
    }
    
  6. Sınıfında, MainActivity IntentService FCM kayıt belirtecinizi almak ve merkezinizle kaydettirmek için ' i çağırmadan önce Google Play hizmetleri denetleyen aşağıdaki kodu ekleyin:

    public void registerWithNotificationHubs()
    {
        if (checkPlayServices()) {
            // Start IntentService to register this application with FCM.
            Intent intent = new Intent(this, RegistrationIntentService.class);
            startService(intent);
        }
    }
    
  7. OnCreate MainActivity Sınıfının yönteminde, etkinlik oluşturulduğunda kayıt işlemini başlatmak için aşağıdaki kodu ekleyin:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mainActivity = this;
        registerWithNotificationHubs();
        FirebaseService.createChannelAndHandleNotifications(getApplicationContext());
    }
    
  8. Uygulama durumunu doğrulamak ve uygulamanızda durumu raporlamak için bu ek yöntemleri şu şekilde ekleyin MainActivity :

    @Override
    protected void onStart() {
        super.onStart();
        isVisible = true;
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        isVisible = false;
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        isVisible = true;
    }
    
    @Override
    protected void onStop() {
        super.onStop();
        isVisible = false;
    }
    
    public void ToastNotify(final String notificationMessage) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this, notificationMessage, Toast.LENGTH_LONG).show();
                TextView helloText = (TextView) findViewById(R.id.text_hello);
                helloText.setText(notificationMessage);
            }
        });
    }
    
  9. ToastNotify yöntemi, uygulamada kalıcı olarak durumu ve bildirimleri raporlamak için "Hello World" TextView denetimini kullanır. Kaynak > düzeni > activity_main.xml düzeninde, bu denetim için aşağıdaki kimliği ekleyin.

    android:id="@+id/text_hello"
    

    TextView denetimine uygulanan Android: ID = "@ + id/text_hello" kimliğini gösteren ekran görüntüsü.

  10. Daha sonra, AndroidManifest.xml tanımladığınız alıcı için bir alt sınıf eklersiniz. FirebaseService adlı projenize başka bir yeni sınıf ekleyin.

  11. FirebaseService.java'in üst kısmına şu içeri aktarma deyimlerini ekleyin:

    import com.google.firebase.messaging.FirebaseMessagingService;
    import com.google.firebase.messaging.RemoteMessage;
    import android.util.Log;
    import android.app.NotificationChannel;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.media.RingtoneManager;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import androidx.core.app.NotificationCompat;
    
  12. Sınıfı için aşağıdaki kodu ekleyin FirebaseService , bunun bir alt sınıfı haline gelir FirebaseMessagingService .

    Bu kod, onMessageReceived alınan yöntemi ve rapor bildirimlerini geçersiz kılar. Ayrıca, yöntemini kullanarak Android Notification Manager 'a anında iletme bildirimi gönderir sendNotification() . sendNotification()Uygulama çalışmadığı zaman ve bir bildirim alındığında yöntemi çağırın.

    public class FirebaseService extends FirebaseMessagingService
    {
        private String TAG = "FirebaseService";
    
        public static final String NOTIFICATION_CHANNEL_ID = "nh-demo-channel-id";
        public static final String NOTIFICATION_CHANNEL_NAME = "Notification Hubs Demo Channel";
        public static final String NOTIFICATION_CHANNEL_DESCRIPTION = "Notification Hubs Demo Channel";
    
        public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        static Context ctx;
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            // ...
    
            // TODO(developer): Handle FCM messages here.
            // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
            Log.d(TAG, "From: " + remoteMessage.getFrom());
    
            String nhMessage;
            // Check if message contains a notification payload.
            if (remoteMessage.getNotification() != null) {
                Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
    
                nhMessage = remoteMessage.getNotification().getBody();
            }
            else {
                nhMessage = remoteMessage.getData().values().iterator().next();
            }
    
            // Also if you intend on generating your own notifications as a result of a received FCM
            // message, here is where that should be initiated. See sendNotification method below.
            if (MainActivity.isVisible) {
                MainActivity.mainActivity.ToastNotify(nhMessage);
            }
            sendNotification(nhMessage);
        }
    
        private void sendNotification(String msg) {
    
            Intent intent = new Intent(ctx, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
            mNotificationManager = (NotificationManager)
                    ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    
            PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
                    intent, PendingIntent.FLAG_ONE_SHOT);
    
            Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                    ctx,
                    NOTIFICATION_CHANNEL_ID)
                    .setContentText(msg)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setSmallIcon(android.R.drawable.ic_popup_reminder)
                    .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL);
    
            notificationBuilder.setContentIntent(contentIntent);
            mNotificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
        }
    
        public static void createChannelAndHandleNotifications(Context context) {
            ctx = context;
    
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel(
                        NOTIFICATION_CHANNEL_ID,
                        NOTIFICATION_CHANNEL_NAME,
                        NotificationManager.IMPORTANCE_HIGH);
                channel.setDescription(NOTIFICATION_CHANNEL_DESCRIPTION);
                channel.setShowBadge(true);
    
                NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
                notificationManager.createNotificationChannel(channel);
             }
        }
    }
    
  13. Android Studio > kodunuzda herhangi bir hata olmadığından emin olmak için, menü çubuğunda, Oluştur projeyi derle ' yi seçin. Simge hakkında bir hata alırsanız ic_launcher , aşağıdaki ifadeyi AndroidManifest.xml dosyasından kaldırın:

        android:icon="@mipmap/ic_launcher"
    
  14. Uygulamayı çalıştırmak için bir sanal cihazınıza sahip olduğunuzdan emin olun. Yoksa, aşağıdaki gibi bir tane ekleyin:

    1. Cihaz Yöneticisi 'ni aç
    2. Sanal cihaz oluştur
  15. Seçili cihazınızda uygulamayı çalıştırın ve hub 'a başarıyla kaydedildiğinizi doğrulayın.

    Not

    Kayıt, onTokenRefresh() örnek kimliği hizmetinin yöntemi çağrılana kadar ilk başlatma sırasında başarısız olabilir. Yenileme işlemi bildirim hub'ına başarılı bir kayıt başlatmalıdır.

    Cihaz kaydı başarılı

Bildirim hub’ından bildirim göndermeyi test edin

Aşağıdaki adımları uygulayarak [Azure Portal] anında iletme bildirimleri gönderebilirsiniz:

  1. Azure portal, hub 'ınız için Bildirim Hub 'ı sayfasında, sorun giderme bölümünde Test gönder ' i seçin.

  2. Platformlar için Android’i seçin.

  3. Gönder’i seçin. Mobil uygulamayı üzerinde çalıştırmadığınız için henüz Android cihazında bir bildirim görmezsiniz. Mobil uygulamayı çalıştırdıktan sonra bildirim iletisini görmek için Gönder düğmesini tekrar seçin.

  4. En alttaki listede işlemin sonucunu görürsünüz.

    Azure Notification Hubs - Test Gönderimi

  5. Uyarı iletisini cihazınızda görürsünüz.

    Cihazdaki bildirim iletisi

Anında iletme bildirimleri normal olarak, uyumlu bir kitaplık kullanılarak Mobile Apps veya ASP.NET gibi bir arka uç hizmetine gönderilir. Arka uçta bir kitaplık yoksa, bildirim iletilerini göndermek için doğrudan REST API de kullanabilirsiniz.

Bildirim göndermek için gözden geçirmek isteyebileceğiniz diğer bazı öğreticilerin listesi aşağıda verilmiştir:

Öykünücü üzerinde mobil uygulamayı çalıştırma

Bir öykünücü içinde anında iletme bildirimlerini test etmeden önce, öykünücü görüntünüzün uygulamanız için seçtiğiniz Google API düzeyini desteklediğinden emin olun. Görüntünüz yerel Google API 'Lerini desteklemiyorsa hizmet _ _ kullanılamıyor özel durumunu alabilirsiniz.

Ayrıca, Google hesabınızı, Ayarlar hesaplar bölümünde çalışan öykünücüsünüzün içine eklediğinizden emin olun > . Aksi halde, FCM ile kaydolma girişimleri, kimlik doğrulama _ başarısız özel durumuyla sonuçlanabilir.

Sonraki adımlar

Bu öğreticide, hizmet ile kaydedilmiş tüm Android cihazlara bildirim yayımlamak için Firebase bulut mesajlaşma 'yı kullandınız. Belirli cihazlara nasıl anında iletme bildirimleri gönderileceğini öğrenmek için aşağıdaki öğreticiye ilerleyin: