安卓 GCM 获取实例 ID 的错误

3
当我尝试从GCM中获取InstanceID时,根据文档,Android Studio会提示缺少上下文参数。但文档中并没有提到这个问题。我该如何解决?我是否仅需将上下文作为参数传递即可:
String iid = InstanceID.getInstance(this).getID();

你的对象调用这个方法是 Context 或其子类,比如 Activity 吗? - ianhanniballake
@ianhanniballake 文档中说 String iid = InstanceID.getInstance().getID(); 但 AS 希望传递上下文。我正在从 Activity 中调用此方法,并希望在成功从 GCM 服务器获取实例 ID 后将其发送到后端。希望我表述清楚了。 - The_Martian
2个回答

1

试试这个

try {
            InstanceID instanceID = InstanceID
                    .getInstance(getApplicationContext());
            token = instanceID.getToken(ApplicationConstants.SENDER_ID,
                    GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
        } catch (IOException e) {
            e.printStackTrace();
        }       

1
我尝试了一下,出现了:java.io.IOException: MISSING_INSTANCEID_SERVICE。有什么建议吗? - bashan
1
在这段代码中,你会看到ApplicationConstants.SENDER_ID,这是你从开发者控制台获取的项目编号。你需要先从Google开发者控制台创建API密钥和项目编号,这样就可以解决这个异常了。祝你好运! - Bhavinkumar Patel
嗨Ashan - MISSING_INSTANCEID_SERVICE问题有任何后续进展吗? 我也看到了这个问题。 - jason.zissman
@jason.zissman,请查看https://dev59.com/tY7ea4cB1Zd3GeqPBXXZ。在模拟器上安装Play Market。 - CoolMind

1

根据InstanceID Javadoc,您必须传递一个ContextInstanceID.getInstance(),可以是您的Activity或其他上下文。


我已经向文档团队提交了一个错误报告,以更新文档。 - ianhanniballake
注意:文档现已更新,反映您必须传入一个“Context”。 - ianhanniballake

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