无法解析目标意图服务,传递消息时出错:未找到ServiceIntent

时间:2016-03-21 13:49:29

标签: android google-cloud-messaging

我尝试让 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'

那么到底是什么?!如果可以,请帮助我。

4 个答案:

答案 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中可能有问题)