GCMBroadcastReceiver未使用清单或动态注册
<receiver
android:name="com.ee.nowmedia.core.pushnotification.PushBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter><!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" /><!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.ee.nowmedia.core.pushnotification" />
</intent-filter>
</receiver>
答案 0 :(得分:1)
自2018年4月10日起,Google已弃用 GCM 。 GCM 服务器和客户端API已过时,将于2019年4月11日删除。将GCM应用程序迁移到Firebase Cloud Messaging (FCM),它将继承可靠且可扩展的GCM基础架构以及许多新功能。有关更多信息,请参见migration guide。在Google Cloud Messaging -- DEPRECATED 4/10/2018 文档中了解更多信息
代码
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
......
</intent-filter>
</receiver>
从8.0开始以及2019年4月11日之后对于每个API都没有用。
答案 1 :(得分:0)
如以上答案中已提到的,不建议使用GCM。从GCM迁移到FCM,这非常容易。您只需要创建一个扩展FirebaseMessagingService类的类。
在清单中注册服务类。
<service
android:name=".fcm.MyFirebaseMessagingService"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
这是MyFirebaseMessagingService类的外观。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
//Here you will get your FCM ID/Token
Log.d(TAG, "onNewToken: " + s);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//This method is used for handling incoming notifications
}}
仅此而已。 FCM完成