GCM注册时出现INVALID_SENDER错误

4

我正在开发一个应用程序,希望实现推送通知功能。为此,我使用了Google提供的GCM服务。我已在Google控制台上注册了我的项目,并使用项目ID作为GCM注册的senderID。

GCMRegistrar.checkDevice(this); //no error 
GCMRegistrar.checkManifest(this); //no error          
final String regId = GCMRegistrar.getRegistrationId(this);               
if (regId.equals("")) {
            GCMRegistrar.register(this, "********"); //after this.. 
                                       //onError method of GCMIntentService class
                                      //is triggered, there I am printing error
                                     //in log its saying INVALD_SENDER 
        } 

我已在AndroidManifest.xml中给出了所有必需的权限。

我已经参考了以下链接:

1) Android GCM SENDER_ID,如何获取? 2) 在具有两个GCM BroadcastReceivers的应用程序中偶尔收到INVALID_SENDER错误 3) GCM无效发件人错误 4) http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

4个回答

23

SENDER_ID = 项目编号,我一直在使用项目ID.. 项目编号在控制台中可以在项目ID旁找到。


1
或者在 google-services.json 文件中,该文件应放置在您的 Android 项目的根目录下。 - Joseph Garrone

15

谷歌已更改其布局。您可以从这里找到项目号(project_number)

选择项目-> 我的项目

单击三个点 -> 项目信息 -> 项目编号

输入图像描述


2
谢谢!在这些屏幕上转了好几圈。布局非常糟糕。 - Groovee60

0

这里有一个关于推送通知的工作示例,希望能对你有所帮助:

private String SENDER_ID = "xxxxxxx";
private GoogleCloudMessaging gcm;

//somewhere else
gcm = GoogleCloudMessaging.getInstance(context);
String msg = gcm.register(SENDER_ID);

最近我在这里遇到了一些服务不可用的错误,因此我还实现了一个Broadcastreciever来接收注册令牌。

@Override
public void onReceive(Context context, Intent intent) {
    Bundle data = intent.getExtras();
    if (data!=null){
        String regId = data.getString("registration_id");
    }
}

找不到GoogleCloudMessaging。我想你正在使用google-play-service_lib项目,但我正在使用gcm.jar。 - DCoder

0

我遇到了同样的错误,后来发现在 Firebase 控制台中未启用 Google 登录。启用后,错误消失了。

请参考此图片:

image


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接