GCM无效发送错误 [英] GCM Invalid sender error
问题描述
我卡上一个神秘的问题了一段时间。 所以,我在我的Android应用程序实现的GCM,但是我收到一个INVALID_SENDER错误。
- 在我的SENDER_ID是从谷歌项目的URL中的ID。
- 在Android的推送通知是对
奇怪的有关这是我已经有一个注册ID发送通知。 所以,我的控制台是这样的:
9月3日至26日:39:20.233:I /<试验>(19761):已经注册:APA91bG6- O3OnZt50EAjYvJ5KETv3qAlPOn2SfOPXez7SLAmaAOkHTN6EMDJb91gFIWkftZkJiub6UoEk4O- WQP7kk2oZGQjZ1VCZZS0WddQtjFaCfYfZfb7SEw3IS1sd4caJcdZE4LA1F0hxzc7Ss1UiYHXX-XXXX
9月3日至26日:48:23.522的:I /&其中;试验>(19925):GCMIntentService
9月3日至26日:39:20.670:I /<试验>(19761):上的错误INVALID_SENDER
里面的onCreate:
GCMRegistrar.checkDevice(本);
GCMRegistrar.checkManifest(本);
最后弦乐REGID = GCMRegistrar.getRegistrationId(本);
如果(regId.equals()){
Log.i(<试验>中,注册);
GCMRegistrar.register(这一点,2194354949XX);
} 其他 {
Log.i(<试验>中,已经注册成功。+ REGID);
}
BroadcastReceiver的:
公共类GCMBroadcastReceiver扩展com.google.android.gcm.GCMBroadcastReceiver {
@覆盖
保护字符串getGCMIntentServiceClassName(上下文的背景下){
返回be.XXX.XXX.system.GCMIntentService;
}
}
GCMIntentService:
公共类GCMIntentService扩展GCMBaseIntentService {
@覆盖
保护无效的onError(背景为arg0,串ErrorID中){
Log.i(<试验>中,上的错误+ ErrorID中);
}
@覆盖
保护无效的onMessage(背景为arg0,意图意图){
Log.i(<试验>中。的onMessage+ intent.getExtras()的toString());
}
@覆盖
保护无效onRegistered(背景为arg0,串REGID){
Log.i(<试验>中,注册ID:+ REGID);
}
@覆盖
保护无效onUnregistered(背景为arg0,串REGID){
Log.i(<试验>中,onUnregistered+ REGID);
}
公共GCMIntentService(){
超级(2194354949XX);
Log.i(<试验>中,GCMIntentService);
}
}
清单:
<许可
机器人:名称=com.XX.XX.permission.C2D_MESSAGE
安卓的ProtectionLevel =签名/>
<使用-权限的Android:名称=com.smstiming.hezemans.permission.C2D_MESSAGE/>
<使用-权限的Android:名称=com.google.android.c2dm.permission.RECEIVE/>
<使用-权限的Android:名称=android.permission.INTERNET对/>
<使用-权限的Android:名称=android.permission.GET_ACCOUNTS/>
<使用-权限的Android:名称=android.permission.WAKE_LOCK/>
<使用-权限的Android:名称=android.permission.VIBRATE/>
<接收器的Android版本:NAME =be.XX.XX.system.GCMBroadcastReceiver安卓权限=com.google.android.c2dm.permission.SEND>
<意向滤光器>
<作用机器人:名称=com.google.android.c2dm.intent.RECEIVE/>
<作用机器人:名称=com.google.android.c2dm.intent.REGISTRATION/>
<类机器人:名称=com.smstiming.hezemans/>
&所述; /意图滤光器>
< /接收器>
<服务机器人:名称=be.XX.XX.system.GCMIntentService/>
解决这个终于拿到。却意外地尝试使用了项目ID',而不是'项目编号。谷歌开发者控制台提供了概述页面上,请确保您使用的是正确的。
I'm stuck for a while on a mysterious problem. So I implemented GCM in my android app, but i receive an INVALID_SENDER error.
- My SENDER_ID is the id from the url of the google project.
- The Android push notifications are ON
The weird thing about this is that i already have a registration id to send notifications to. So my console looks like this:
03-26 09:39:20.233: I/<test>(19761): Already registered: APA91bG6- O3OnZt50EAjYvJ5KETv3qAlPOn2SfOPXez7SLAmaAOkHTN6EMDJb91gFIWkftZkJiub6UoEk4O- WQP7kk2oZGQjZ1VCZZS0WddQtjFaCfYfZfb7SEw3IS1sd4caJcdZE4LA1F0hxzc7Ss1UiYHXX-XXXX
03-26 09:48:23.522: I/<test>(19925): GCMIntentService
03-26 09:39:20.670: I/<test>(19761): on Error INVALID_SENDER
Inside the onCreate:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
Log.i("<test>", "registering");
GCMRegistrar.register(this, "2194354949XX");
} else {
Log.i("<test>", "Already registered: " + regId);
}
broadcastreceiver:
public class GCMBroadcastReceiver extends com.google.android.gcm.GCMBroadcastReceiver{
@Override
protected String getGCMIntentServiceClassName(Context context){
return "be.XXX.XXX.system.GCMIntentService";
}
}
GCMIntentService:
public class GCMIntentService extends GCMBaseIntentService {
@Override
protected void onError(Context arg0, String errorId) {
Log.i("<test>","on Error " + errorId);
}
@Override
protected void onMessage(Context arg0, Intent intent) {
Log.i("<test>","onMessage " + intent.getExtras().toString());
}
@Override
protected void onRegistered(Context arg0, String regId) {
Log.i("<test>","Registration id: " + regId);
}
@Override
protected void onUnregistered(Context arg0, String regId) {
Log.i("<test>","onUnregistered " + regId);
}
public GCMIntentService() {
super("2194354949XX");
Log.i("<test>","GCMIntentService ");
}
}
Manifest:
<permission
android:name="com.XX.XX.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.smstiming.hezemans.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<receiver android:name="be.XX.XX.system.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.smstiming.hezemans" />
</intent-filter>
</receiver>
<service android:name="be.XX.XX.system.GCMIntentService" />
Finally got around this. Was accidentally trying to use the the 'Project ID' instead of the 'Project Number'. Google Developer Console provides both on the Overview page, make sure you are using the correct one.
这篇关于GCM无效发送错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!