GcmListenerService.onMessageReceived() 未调用
我目前正在努力在我的应用中实现 GCM 通知。
我遇到的问题是,我的实现中的方法没有被调用。我从GCM服务器接收数据很好,因为它会自动生成通知(我希望使用该方法将其替换为我自己的通知),但之后我的日志调用都不会打印在日志中。onMessageReceived()
GcmListenerService
onMessageReceived()
从服务器发送到 GCM 服务器的 JSON
{
"notification" : {
"title" : "Title",
"text" : "Message",
"icon" : "@drawable\/ic_notification",
"click_action" : "OPEN_MAIN_ACTIVITY"
},
"registration_ids":[
"xxxx", "xxxx", "xxxx", "etc"
]
}
AndroidManifest.xml(仅限GCM部分)
<!-- GCM START -->
<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.my.package" />
</intent-filter>
</receiver>
<service
android:name=".Services.ListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".Services.IDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<!-- GCM END -->
GcmListenerService(只是一个快速打印,看看它是否被调用)
public class ListenerService extends GcmListenerService {
private static final String TAG = "MyGcmListenerService";
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("title");
Log.d(TAG, "From: " + from);
Log.d(TAG, "Message: " + message);
}
}
不确定请求令牌的方法是否相关,但如果需要,我可以发布它。
如果问题的任何部分不清楚,请告诉我,我不是最擅长解释的人。