2017-06-16 103 views
0

我正在實施基於消息的消息傳遞服務以向所有用戶發送通知。一切都很好,直到現在,但問題是當我關閉我的WiFi,並同時從消防局控制檯發送通知,我的消息的狀態顯示消息已成功發送,但是當我打開我的WiFi我不接收任何通知,爲什麼會這樣,FCM是否不允許待處理的通知,或者我做錯了什麼。他們的任何實現如何發送處於未決狀態的通知。下面是我的代碼Firebase消息服務

Android的清單

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xamarin.fcmexample" android:versionCode="1" android:versionName="1.0" android:installLocation="auto"> 
    <uses-sdk android:minSdkVersion="16" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <application android:label="FCMClient"> 
     <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" /> 
     <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="${applicationId}" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

FirebaseMessagingService.cs

public class MyFirebaseMessagingService : FirebaseMessagingService 
{ 
    const string TAG = "MyFirebaseMsgService"; 
    public override void OnCreate() 
    { 
     base.OnCreate(); 
    } 
    public override void OnMessageReceived(RemoteMessage message) 
    { 
     Log.Debug(TAG, "From: " + message.From); 
     Log.Debug(TAG, "Notification Message Body: " + message.GetNotification().Body); 
     SendNotification(message.GetNotification().Body); 
    } 
    void SendNotification(string messageBody) 
    { 
     var intent = new Intent(this, typeof(MainActivity)); 
     intent.AddFlags(ActivityFlags.ClearTop); 
     var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot); 

     var notificationBuilder = new Notification.Builder(this) 
      .SetSmallIcon(Resource.Drawable.Icon) 
      .SetContentTitle("FCM Message") 
      .SetContentText(messageBody) 
      .SetAutoCancel(true) 
      .SetContentIntent(pendingIntent); 

     var notificationManager = NotificationManager.FromContext(this); 
     notificationManager.Notify(0, notificationBuilder.Build()); 
    } 
} 

FirebaseIDService.cs

public class MyFirebaseIIDService : FirebaseInstanceIdService 
    { 
     const string TAG = "MyFirebaseIIDService"; 
     public override void OnTokenRefresh() 
     { 
      var refreshedToken = FirebaseInstanceId.Instance.Token; 
      Log.Debug(TAG, "Refreshed token: " + refreshedToken); 
      SendRegistrationToServer(refreshedToken); 
     } 
     void SendRegistrationToServer(string token) 
     { 
      // Add custom implementation, as needed. 
     } 
    } 
+0

我使用相同的代碼,並嘗試重現您的問題,第一次部署在我的手機上,一切工作正常。當我關閉WiFi時,雖然有短暫的延遲,但應用仍然收到該消息。但是當我清理並重建項目時,我無法收到任何消息。 –

回答

0

我假設你的問題依賴於應用程序是在前臺還是在後臺,以及你是發送一個通知有效載荷還是一個數據有效載荷,因爲當應用程序在後臺時,通知有效載荷不會達到「 OnMessageReceived「回調。檢查應用程序狀態表中的以下鏈接:https://firebase.google.com/docs/cloud-messaging/android/receive