Öğretici: Firebase SDK sürüm 0.6 kullanarak Android cihazlara 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'nın 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.

Önemli

Google, 20 Haziran 2024'te FCM'nin eski HTTP'sini desteklemeyi durduracaktır. Daha fazla bilgi için bkz . Azure Notification Hubs ve Google Firebase Cloud Messaging geçişi.

Bu öğreticinin tamamlanmış kodu GitHub'dan indirilebilir.

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ğlan.
  • Uygulamayı test etme.

Önkoşullar

Bu öğreticiyi tamamlamak için etkin bir Azure hesabınızın olması gerekir. Hesabınız yoksa yalnızca birkaç dakika içinde ücretsiz bir deneme hesabı oluşturabilirsiniz. Ayrıntılar için bkz. Azure Ücretsiz Deneme.

Ayrıca aşağıdaki öğelere de ihtiyacınız vardır:

  • Android Studio'nun en son sürümü
  • Firebase Cloud Messaging için Android 2.3 veya üzeri
  • Firebase Cloud Messaging için Google Repository düzeltmesi 27 veya üzeri
  • Firebase Cloud Messaging için Google Play Services 9.0.2 veya üzeri

Bu öğreticiyi tamamlamak, Android uygulamaları için diğer tüm Notification Hubs öğreticilerini gerçekleştirmenin önkoşullarından biridir.

Android Studio Projesi oluşturma

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

    2. Proje dosyalarının kaydedildiği konumu belirtin.

    3. Bitir'i seçin.

      Configure your project)

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.

    Add Firebase to your Android app

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

    1. Android paket adı için uygulamanızın build.gradle dosyasında applicationId değerini kopyalayın. Bu örnekte, şeklindedir com.fabrikam.fcmtutorial1app.

      Specify the package name

    2. Uygulamayı kaydet'i seçin.

  4. google-services.json İndir'i seçin, dosyayı projenizin uygulama klasörüne kaydedin ve ardından İleri'yi seçin.

    Download google-services.json

  5. Android Studio'da 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 deyimi ekleyin.

      classpath 'com.google.gms:google-services:4.0.1'
      
    2. Uygulama düzeyi build.gradle dosyanızda (<project>/<app-module>/build.gradle), bağımlılıklar bölümüne aşağıdaki deyimleri 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 configuration changes

  6. İleri'yi seçin.

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

    Skip the last step

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

    Select Project Settings

  9. google-services.json dosyasını Android Studio projenizin uygulama klasörüne indirmediyseniz, bunu bu sayfada yapabilirsiniz.

  10. Üst kısımdaki Cloud Messaging sekmesine geçin.

  11. Sunucu anahtarını kopyalayıp daha sonra kullanmak üzere kaydedin. Hub'ınızı yapılandırmak için bu değeri kullanırsınız.

  12. Firebase Cloud Messaging sekmesinde bir Sunucu anahtarı görmüyorsanız bu ek adımları izleyin.

    1. "Cloud Messaging API (Eski) Devre Dışı" 🚫 Başlığının üç noktalı menüsüne tıklayın
    2. "Google Cloud Console'da API'yi yönetme" için sunulan bağlantıyı izleyin.
    3. google cloud console'da googlecloudmessaging API'sini etkinleştirmek için düğmeye basın.
    4. Birkaç dakika bekleyin.
    5. Firebase konsol projeniz Cloud Messaging sekmesine dönün ve sayfayı yenileyin.
    6. Cloud Messaging API üst bilgisinin "Cloud Messaging API (Eski) Etkin" ✅ olarak değiştirildiğini ve şimdi bir Sunucu Anahtarı gösterdiğini görün.

    Screenshot showing the Enable Cloud Messaging API (Legacy) tab.

Hub yapılandırma

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

  2. Soldaki menüden Tüm hizmetler'i seçin. A screenshot showing select All Services for an existing namespace.

  3. Hizmetleri filtrele metin kutusuna Notification Hubs yazın. Hizmeti soldaki menüden SıK KULLANıLANLAR bölümüne eklemek için hizmet adının yanındaki yıldız simgesini seçin. Notification Hubs'ı seçin.

    A screenshot showing how to filter for notification hubs.

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

    A screenshot showing how to create a new notification hub.

  5. Bildirim Hub'ı sayfasındaki Temel Bilgiler sekmesinde aşağıdaki adımları uygulayın:

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

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

    3. Ad alanı bir veya daha fazla bildirim hub'ı içerdiğinden, Bildirim Hub'ı Ayrıntıları'na hub için bir ad yazın.

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

      Screenshot showing notification hub details.

    5. Kullanılabilirlik Alanları seçeneğini gözden geçirin. Kullanılabilirlik alanları olan bir bölge seçtiyseniz, onay kutusu varsayılan olarak seçilidir. Kullanılabilirlik Alanları ücretli bir özellik olduğundan katmanınıza ek ücret eklenir.

    6. Olağanüstü durum kurtarma seçeneğini belirleyin: Yok, Eşleştirilmiş kurtarma bölgesi veya Esnek kurtarma bölgesi. Eşleştirilmiş kurtarma bölgesi'ni seçerseniz yük devretme bölgesi görüntülenir. Esnek kurtarma bölgesi'ni seçerseniz, kurtarma bölgeleri listesinden seçim yapmak için açılan listeyi kullanın.

      Screenshot showing availability zone details.

    7. Oluştur'u belirleyin.

  6. Dağıtım tamamlandığında Kaynağa git'i seçin.

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

  1. Sol bölmedeki 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ı uyarılarda hub'ın başarıyla güncelleştirildiğini belirten bir ileti görüntüler. Kaydet düğmesi devre dışı bırakıldı.

Hub'ınız artık Firebase Cloud Messaging ile çalışacak şekilde yapılandırıldı. Ayrıca, bir cihaza bildirim göndermek ve bildirim almak için bir uygulama kaydetmek için gereken bağlantı dizesi sahipsiniz.

Uygulamanızı bildirim hub'ına bağlama

Projeye Google Play hizmetlerini ekleme

  1. Android Studio'da, menüde Araçlar'ı ve ardından SDK Yöneticisi'ni seçin.

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

    Android SDK Manager - select target version

  3. Henüz yüklü değilse Google API'leri'ni seçin.

    Android SDK Manager - Google APIs selected

  4. SDK Araçları sekmesine geçin. Google Play Hizmetleri'ni henüz yüklemediyseniz aşağıdaki görüntüde gösterildiği gibi Google Play Hizmetleri'ni 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 Services selected

  5. Değişikliği Onayla iletişim kutusunu görürseniz Tamam'ı seçin. Bileşen Yükleyicisi istenen bileşenleri yükler. 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 uygulama etiketine aşağıdaki etiketi ekleyin.

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

Azure Notification Hubs kitaplıkları ekleme

  1. Uygulamanın Build.Gradle dosyasına 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, henüz yoksa 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'
    implementation 'com.google.firebase:firebase-iid:21.1.0'
    
  2. Dosya 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'a kaydolmak için kullanırsınız. Adlı RegistrationIntentServicebir IntentService kullanarak arka planda bu kaydı desteklersiniz. Bu hizmet, FCM kayıt belirtecinizi de yeniler. Ayrıca, alt sınıfı FirebaseMessagingService olarak adlı FirebaseService bir sınıf oluşturur ve bildirimleri almak ve işlemek için yöntemini geçersiz kılarsınızonMessageReceived.

    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 FCM ile ilgili gerekli izinleri etiketin </application> altına ekleyin.

    <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 ekleme

  1. Proje Görünümü'nde app>src>main>java'yı genişletin. Java altında paket klasörünüze sağ tıklayın, Yeni'yi ve ardından Java Sınıfı'yı seçin. Ad için Bildirim Ayarlar girin ve Tamam'ı seçin.

    Sınıfı için aşağıdaki kodda yer alan bu iki yer tutucuyu güncelleştirdiğinden NotificationSettings emin olun:

    • HubListenConnectionString: Hub'ınız için DefaultListenAccessSignature bağlantı dizesi. Azure portalında hub'ınızdaki Erişim İlkeleri'ne tıklayarak bu bağlantı dizesi kopyalayabilirsiniz.

    • HubName: Azure portalındaki 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 değerini girin.

  2. RegistrationIntentService adlı projenize başka bir yeni sınıf ekleyin. Bu sınıf arabirimini IntentService uygular. Ayrıca FCM belirtecinin yenilenmesini ve bildirim hub'ına kaydedilmesini de işler.

    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. MainActivity sınıfında, sınıf bildiriminin üzerine aşağıdaki import deyimleri 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. Sınıfın en üstüne aşağıdaki üyeleri 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. MainActivity sınıfında, Google Play Hizmetleri'nin 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. MainActivity sınıfında, FCM kayıt belirtecinizi almak ve hub'ınıza kaydolmak için öğesini çağırmadan önce Google Play Hizmetleri'ni IntentService denetleen 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 sınıfının yöntemindeMainActivity, 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. Uygulamanızda uygulama durumunu ve rapor durumunu doğrulamak için şu ek yöntemleri öğesine MainActivityekleyin:

    @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. Res>düzeni> activity_main.xml düzeninize bu denetim için aşağıdaki kimliği ekleyin.

    android:id="@+id/text_hello"
    

    Screenshot that shows the android:id=

  10. Ardından, 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 ekleyerek öğesinin FirebaseServiceFirebaseMessagingServicealt sınıfına ekleyin.

    Bu kod yöntemi geçersiz kılar onMessageReceived ve alınan bildirimleri raporlar. ayrıca yöntemini kullanarak anında iletme bildirimini Android bildirim yöneticisine sendNotification() gönderir. sendNotification() Uygulama çalışmadığında ve bir bildirim alındığında yöntemini ç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'da, kodunuzda hata olmadığından emin olmak için menü çubuğunda Projeyi Yeniden Derle'yi>seçin. Simgeyle ilgili ic_launcher bir hata alırsanız, AndroidManifest.xml dosyasından aşağıdaki deyimi kaldırın:

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

    1. Open device manager
    2. Create virtual device
  15. Uygulamayı seçtiğiniz cihazda çalıştırın ve hub'a başarıyla kaydedildiğini doğrulayın.

    Not

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

    Device registration successful

Bildirim hub’ından bildirim göndermeyi test edin

Aşağıdaki adımları uygulayarak Azure portalından anında iletme bildirimleri gönderebilirsiniz:

  1. Azure portalında, hub'ınızın Bildirim Hub'ı sayfasında Sorun Giderme bölümünde Göndermeyi Sına'yı seçin.

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

  3. Gönder'i seçin. Android cihazda mobil uygulamayı çalıştırmadığınız için henüz bir bildirim görmezsiniz. Mobil uygulamayı çalıştırdıktan sonra, bildirim iletisini görmek için Gönder düğmesini yeniden seçin.

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

    Azure Notification Hubs - Test Send

  5. Cihazınızda bildirim iletisini görürsünüz.

    Notification message on device

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 ucunuz için bir kitaplık kullanılamıyorsa, bildirim iletileri göndermek için doğrudan REST API'yi de kullanabilirsiniz.

Bildirim göndermek için gözden geçirmek isteyebileceğiniz diğer öğreticilerin listesi aşağıdadır:

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

Ö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. Resminiz yerel Google API'lerini desteklemiyorsa SERVICE_NOT_AVAILABLE özel durumunu alabilirsiniz.

Ayrıca, Ayarlar Accounts altında çalışan öykünücünüze Google hesabınızı eklediğinizden> emin olun. Aksi takdirde, FCM'ye kaydolma girişimleriniz AUTHENTICATION_FAILED özel durumla sonuçlanabilir.

Sonraki adımlar

Bu öğreticide, hizmete kayıtlı tüm Android cihazlarına bildirim yayınlamak için Firebase Cloud Messaging'i kullandınız. Belirli cihazlara nasıl anında iletme bildirimleri gönderileceğini öğrenmek için aşağıdaki öğreticiye ilerleyin: