我尝试让 gcm 工作。
当我们的服务器发送推送通知时,我在应用程序的日志中遇到了这两个错误:
E / GcmReceiver(8049):无法解决目标意图服务,正在跳过 classname enforcement E / GcmReceiver(8049):传递时出错 消息:未找到ServiceIntent。
在我的应用文件夹中,我收到了google-services.json
文件。
我已将 2所需服务和接收器添加到我的Manifest中:
<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令牌很好。 我也得到了推送'事件',但不知怎的,我上面有两个错误,没有消息。
我已将我的项目编号从google api控制台添加到strings.xml
'google_app_id'
API密钥应该没问题,因为我确实得到了推送事件,但不知道提供了消息。
我的gradle的应用程序级别依赖项包含:
compile 'com.google.android.gms:play-services:8.+'
我的gradle的项目级别依赖项包含:
classpath 'com.google.gms:google-services:1.3.1'
那么到底是什么?!如果可以,请帮助我。
答案 0 :(得分:5)
您的清单中应该有这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"/>
答案 1 :(得分:1)
添加firebase消息传递依赖项对我来说很有效
implementation 'com.google.firebase:firebase-analytics:17.0.1'
implementation 'com.google.firebase:firebase-messaging:19.0.1'
请注意,firebase消息传递依赖于firebase-analytics
答案 2 :(得分:0)
嘿你需要为接收通知添加MyGcmListenerService类:
public class MyGcmListenerService extends GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
}
您需要在AndroidMaifest.xml中将此类添加为服务
<service android:name="com.mypackage.application.services.MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
答案 3 :(得分:0)
只需检查gradle以获取所需的更新,然后同步您的应用并再次运行 的工作(在firebase中可能有问题)