GCM无效发送错误 [英] GCM Invalid sender error

查看:137
本文介绍了GCM无效发送错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我卡上一个神秘的问题了一段时间。 所以,我在我的Andr​​oid应用程序实现的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 =签名/>
<使用-权限的Andr​​oid:名称=com.smstiming.hezemans.permission.C2D_MESSAGE/>
<使用-权限的Andr​​oid:名称=com.google.android.c2dm.permission.RECEIVE/>
<使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
<使用-权限的Andr​​oid:名称=android.permission.GET_ACCOUNTS/>
<使用-权限的Andr​​oid:名称=android.permission.WAKE_LOCK/>
<使用-权限的Andr​​oid:名称=android.permission.VIBRATE/>



<接收器的Andr​​oid版本: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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆