Google Cloud Messaging - InstanceID.getInstance(),从客户端注册

3

我对Java编程和通常的编程都还很陌生。现在,我决定制作自己的应用程序,该应用程序应该利用Google Cloud Messaging。不知怎么的,我成功了,但后来意识到我使用了方法

String regid = gcm.register(PROJECT_NUMBER);

该方法已被弃用,现在应使用tokens和InstanceIDs。因此,我尝试重新编写我的注册以使用它,但我在InstanceID.getInstancer()方面遇到了问题。我仔细按照文档https://developers.google.com/instance-id/guides/android-implementation的所有步骤操作,但某种原因它仍然不起作用。

String authorizedEntity = "79424738XXXX";
String scope = "GCM";
String token = InstanceID.getInstance().getToken(authorizedEntity,scope);

我的Android Studio提示我出现了错误,错误信息如下:

getInstance() - “getInstance (Context) in InstanceID cannot be applied to 0”

提前感谢您!

1个回答

4

这里有一个实际工作的例子:https://developers.google.com/cloud-messaging/android/start

git clone https://github.com/googlesamples/google-services.git

他们在 RegistrationIntentService.java 中执行以下操作:

 InstanceID instanceID = InstanceID.getInstance(this);
                String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
                        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

gcm_defaultSenderId 是您的项目ID(79424738XXXX

thisRegistrationIntentService.this


很遗憾,对我来说它仍然无法工作。 `String projectID = "79424738XXXX"; String token = instanceID.getToken(getString(R.string.projectID), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);`会出现Cannot resolve symbol 'projectID'的错误。 - Devon
你需要在strings.xml文件中定义一个字符串projectID,并将其值设置为"79424738XXXX",然后你的代码就可以正常工作了。 - mrtn
1
好的,我已经弄清楚了,将包含我的项目ID的gcm_defaultSenderId放入strings.xml中,但现在整行代码都会抛出IOException异常。@mrtn是的,我刚刚试过了。现在它会抛出“未处理的异常:java.io.IOException”异常。 - Devon

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