我试着让gcm工作.
当我们的服务器发送推送通知时,我的应用程序的日志中有两个错误:
E/GcmReceiver(8049): Failed to resolve target intent service,skipping
classname enforcement E/GcmReceiver(8049): Error while delivering the
message: ServiceIntent not found.
在我的应用程序的文件夹中,我收到了google-services.json文件.
我已经将2个需要的服务和接收器添加到我的清单中:
<receiver android:name="com.google.android.gms.gcm.GcmReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.myapppackage.application" /> </intent-filter> </receiver> <service android:name="com.myapppackage.application.gcm.newgcm.RegisterGCMTokenService" android:exported="false"> </service> <service android:name="com.myapppackage.application.gcm.newgcm.MyInstanceIDListenerService" android:exported="false"> <intent-filter> <action android:name="com.google.android.gms.iid.InstanceID"/> </intent-filter> </service>
我也添加了这两个作为java类. gcm令牌提供和上传到我们的服务器是罚款.我也有推“事件”,但不知何故,我得到了上面的这2个错误,没有消息.
我将我的项目编号从google api控制台添加到strings.xml为“google_app_id”
API密钥应该是正确的,因为我得到推送事件,但不知何故不提供消息.
我的毕业生的应用程序级依赖有:
compile 'com.google.android.gms:play-services:8.+'
我的毕业生的项目级依赖有:
classpath 'com.google.gms:google-services:1.3.1'
那么怎么了?请帮助我,如果可以的话.
解决方法
你应该在你的清单中有这3个服务.您错过了com.google.android.c2dm.intent.RECEIVE的动作
<service android:name="com.myapppackage.application.gcm.GcmIntentService" android:exported="false"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> </intent-filter> </service> <service android:name="com.myapppackage.application.gcm.GcmIDListenerService" android:exported="false"> <intent-filter> <action android:name="com.google.android.gms.iid.InstanceID" /> </intent-filter> </service> <service android:name="com.myapppackage.application.gcm.RegistrationIntentService" android:exported="false"/>