Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Anında iletme bildirimleri, istemcilere gelen iletiler ve mobil uygulama ön planda çalışmadığında sohbet yazışmasında gerçekleşen diğer işlemler hakkında bildirim alma olanağı sağlar. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.
Uyarı
Sohbet anında iletme bildirimleri, Android SDK'sı için 1.1.0-beta.4 ve 1.1.0 sürümlerinde desteklenir. Eski sürümlerde kayıt yenilemeyle ilgili bilinen bir sorun olduğundan, sürüm 2.0.0 veya üzerini kullanmanızı öneririz. 8'den 12'ye kadar olan adımlar yalnızca 2.0.0'a eşit veya 2.0.0'dan büyük sürümler için gereklidir.
ChatQuickstart projesi için Firebase Cloud Messaging'i ayarlayın.
Create a Firebase project,Register your app with Firebase,Add a Firebase configuration file,Add Firebase SDKs to your appveEdit your app manifestadımlarını Firebase Belgeleri'nde tamamlayın.İletişim Hizmetleri kaynağınızla aynı abonelik içinde bir Bildirim Hub'ı oluşturun, hub için Firebase Cloud Messaging ayarlarınızı yapılandırın ve Bildirim Hub'ını İletişim Hizmetleri kaynağınıza bağlayın. Bkz. Bildirim Hub'ı sağlama.
Aynı dizinde bulunan
MainActivity.javaile aynı dizindeMyFirebaseMessagingService.javaadlı yeni bir dosya oluşturun. Aşağıdaki kodu içineMyFirebaseMessagingService.javakopyalayın.<your_package_name>değerini,MainActivity.javaiçinde kullanılan paket adıyla değiştirmeniz gerekiyor. için<your_intent_name>kendi değerinizi kullanabilirsiniz. 6. adımda bu değeri kullanın.package <your_package_name>; import android.content.Intent; import android.util.Log; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.azure.android.communication.chat.models.ChatPushNotification; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; import java.util.concurrent.Semaphore; public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MyFirebaseMsgService"; public static Semaphore initCompleted = new Semaphore(1); @Override public void onMessageReceived(RemoteMessage remoteMessage) { try { Log.d(TAG, "Incoming push notification."); initCompleted.acquire(); if (remoteMessage.getData().size() > 0) { ChatPushNotification chatPushNotification = new ChatPushNotification().setPayload(remoteMessage.getData()); sendPushNotificationToActivity(chatPushNotification); } initCompleted.release(); } catch (InterruptedException e) { Log.e(TAG, "Error receiving push notification."); } } private void sendPushNotificationToActivity(ChatPushNotification chatPushNotification) { Log.d(TAG, "Passing push notification to Activity: " + chatPushNotification.getPayload()); Intent intent = new Intent("<your_intent_name>"); intent.putExtra("PushNotificationPayload", chatPushNotification); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } }dosya
MainActivity.java'nin başına aşağıdaki içeri aktarma deyimlerini ekleyin:import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.azure.android.communication.chat.models.ChatPushNotification; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.messaging.FirebaseMessaging;MainActivitysınıfına aşağıdaki kodu ekleyin:private BroadcastReceiver firebaseMessagingReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ChatPushNotification pushNotification = (ChatPushNotification) intent.getParcelableExtra("PushNotificationPayload"); Log.d(TAG, "Push Notification received in MainActivity: " + pushNotification.getPayload()); boolean isHandled = chatAsyncClient.handlePushNotification(pushNotification); if (!isHandled) { Log.d(TAG, "No listener registered for incoming push notification!"); } } }; private void startFcmPushNotification() { FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // Log and toast Log.d(TAG, "Fcm push token generated:" + token); Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show(); chatAsyncClient.startPushNotifications(token, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) { Log.w(TAG, "Registration failed for push notifications!", throwable); } }); } }); }onCreateişleviniMainActivityiçinde güncelleştirin.@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LocalBroadcastManager .getInstance(this) .registerReceiver( firebaseMessagingReceiver, new IntentFilter("<your_intent_name>")); }Yorum satırının arkasına
<RECEIVE CHAT MESSAGES>MainActivity: aşağıdaki kodu yazın
startFcmPushNotification();
chatAsyncClient.addPushNotificationHandler(CHAT_MESSAGE_RECEIVED, (ChatEvent payload) -> {
Log.i(TAG, "Push Notification CHAT_MESSAGE_RECEIVED.");
ChatMessageReceivedEvent event = (ChatMessageReceivedEvent) payload;
// You code to handle ChatMessageReceived event
});
-
xmlns:toolsAlanı dosyayaAndroidManifest.xmlekleyin:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.azure.android.communication.chat.sampleapp">
-
AndroidManifest.xmliçindeWorkManageriçin varsayılan başlatıcıyı devre dışı bırakın:
<!-- Disable the default initializer of WorkManager so that we could override it in MyAppConfiguration -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- If you are using androidx.startup to initialize other components -->
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
<!-- End of Disabling default initializer of WorkManager -->
-
WorkManagerDosyanızabuild.gradlebağımlılığı ekleyin:
def work_version = "2.7.1"
implementation "androidx.work:work-runtime:$work_version"
- Özel bir
WorkManagerbaşlatıcı eklemek içinConfiguration.Provideruygulayan bir sınıf oluşturun:
public class MyAppConfiguration extends Application implements Configuration.Provider {
Consumer<Throwable> exceptionHandler = new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) {
Log.i("YOUR_TAG", "Registration failed for push notifications!" + throwable.getMessage());
}
};
@Override
public void onCreate() {
super.onCreate();
// Initialize application parameters here
WorkManager.initialize(getApplicationContext(), getWorkManagerConfiguration());
}
@NonNull
@Override
public Configuration getWorkManagerConfiguration() {
return new Configuration.Builder().
setWorkerFactory(new RegistrationRenewalWorkerFactory(COMMUNICATION_TOKEN_CREDENTIAL, exceptionHandler)).build();
}
}
Yukarıdaki kodun açıklaması: varsayılan başlatıcısı WorkManager9. adımda devre dışı bırakılır. Bu adım, özelleştirilmiş bir WorkFactory sağlamak için Configuration.Provider adımını uygular ve bu, çalışma zamanı sırasında WorkerManager oluşturmaktan sorumludur.
Uygulama Azure İşlevi ile entegre edilmişse, onCreate() yönteminde uygulama parametrelerini başlatın. Uygulama getWorkManagerConfiguration() başlatıldığında, herhangi bir etkinlik, hizmet veya alıcı nesnesi (içerik sağlayıcıları hariç) oluşturulmadan önce yöntem çağrılır, böylece uygulama parametreleri kullanımdan önce başlatılabilir. Diğer ayrıntılar için örnek sohbet uygulamasına bakın.
-
android:name=.MyAppConfiguration, adım 11'deki sınıf adını kullanan alanıAndroidManifest.xmliçine ekleyin.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.AppCompat"
android:supportsRtl="true"
android:name=".MyAppConfiguration"
>