关闭时,Android应用程式未收到FCM通知

前端之家收集整理的这篇文章主要介绍了关闭时,Android应用程式未收到FCM通知前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在检查 Firebase Cloud Messaging发送通知.当应用程序处于开放状态时,已经实现了它并收到通知.但如果我关闭应用程序,它不再通知.有没有解决办法.

码:

  1. WebRequest wRequest;
  2. wRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
  3. wRequest.Method = "post";
  4. wRequest.ContentType = " application/json;charset=UTF-8";
  5. wRequest.Headers.Add(string.Format("Authorization: key={0}",AppId));
  6.  
  7. wRequest.Headers.Add(string.Format("Sender: id={0}",SenderId));
  8.  
  9. string postData = "{\"registration_ids\":[\"" + regIds + "\"],\"data\": "+ value +"}";
  10.  
  11. Byte[] bytes = Encoding.UTF8.GetBytes(postData);
  12. wRequest.ContentLength = bytes.Length;
  13.  
  14. Stream stream = wRequest.GetRequestStream();
  15. stream.Write(bytes,bytes.Length);
  16. stream.Close();
  17.  
  18. WebResponse wResponse = wRequest.GetResponse();

消息服务 –

  1. public class MessagingService extends FirebaseMessagingService {
  2. @Override
  3. public void onMessageReceived(RemoteMessage remoteMessage) {
  4. Map<String,String> data = remoteMessage.getData();
  5. sendNotification(data);
  6. }
  7.  
  8. public void showMessage(Map<String,String> serverData) {
  9. Intent i = new Intent(this,MainActivity.class);
  10. i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  11.  
  12. PendingIntent pendingIntent = PendingIntent.getActivity(this,i,PendingIntent.FLAG_UPDATE_CURRENT);
  13.  
  14. NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
  15. .setAutoCancel(true)
  16. .setContentTitle(serverData.get("Title"))
  17. .setContentText(serverData.get("Message"))
  18. .setSmallIcon(R.drawable.common_google_signin_btn_icon_dark)
  19. .setContentIntent(pendingIntent);
  20.  
  21. NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  22.  
  23. manager.notify(Integer.parseInt(serverData.get("ItemId")),builder.build());
  24. }
  25.  
  26. private void sendNotification(Map<String,String> serverData) {
  27. Intent intent = new Intent(this,MainActivity.class);
  28. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  29. PendingIntent pendingIntent = PendingIntent.getActivity(this,0 /* request code */,intent,PendingIntent.FLAG_UPDATE_CURRENT);
  30.  
  31. long[] pattern = {500,500,500};
  32.  
  33. Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
  34.  
  35. NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
  36. .setSmallIcon(R.drawable.common_google_signin_btn_icon_dark)
  37. .setContentTitle(serverData.get("Title"))
  38. .setContentText(serverData.get("Message"))
  39. .setAutoCancel(true)
  40. .setVibrate(pattern)
  41. .setLights(Color.BLUE,1,1)
  42. .setSound(defaultSoundUri)
  43. .setContentIntent(pendingIntent);
  44.  
  45. NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  46. notificationManager.notify(Integer.parseInt(serverData.get("ItemId")),notificationBuilder.build());
  47. }
  48.  
  49. }

主要活动-

  1. public class MainActivity extends AppCompatActivity {
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. FirebaseMessaging.getInstance().subscribeToTopic("test");
  8. FirebaseInstanceId.getInstance().getToken();
  9. }
  10. }

表现-

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="test.com.firebasenotify">
  4. <uses-permission android:name="android.permission.INTERNET"/>
  5. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  6. <application
  7. android:allowBackup="true"
  8. android:icon="@mipmap/ic_launcher"
  9. android:label="@string/app_name"
  10. android:supportsRtl="true"
  11. android:theme="@style/AppTheme">
  12. <activity android:name=".MainActivity">
  13. <intent-filter>
  14. <action android:name="android.intent.action.MAIN" />
  15.  
  16. <category android:name="android.intent.category.LAUNCHER" />
  17. </intent-filter>
  18. </activity>
  19.  
  20. <service android:name=".MessagingService">
  21. <intent-filter>
  22. <action android:name="com.google.firebase.MESSAGING_EVENT" />
  23. </intent-filter>
  24. </service>
  25. <service android:name=".InstanceIDService">
  26. <intent-filter>
  27. <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
  28. </intent-filter>
  29. </service>
  30.  
  31. </application>
  32.  
  33. </manifest>

解决方法

代码没有问题.我正在使用Mi笔记4,不知何故在关闭应用程序时,它不会在Mi4中显示通知.我测试与其他Android设备和它的工作正常.

感谢Tim Castelijns和Frank van Puffelen参与了谈话.

猜你在找的Android相关文章