gpt4 book ai didi

android - 为什么 GCM 为某些 Android 设备返回空注册 ID?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:50 25 4
gpt4 key购买 nike

private void registerClient()    
{
try {
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals(""))
{
registrationStatus = "Registering...";
GCMRegistrar.register(this, "517739810110");
regId = GCMRegistrar.getRegistrationId(this);
registrationStatus = "Registration Acquired";
sendRegistrationToServer();
}
else
{
registrationStatus = "Already registered";
}
}
catch (Exception e)
{
e.printStackTrace();
registrationStatus = e.getMessage();
}
}

对于某些 Android 设备,我可以从 GCM 成功获取注册 ID,但不是所有 Android 设备。GCM 为某些 Android 设备返回空注册 ID。我将 GCM.jar 文件用作返回注册 ID 的第三方工具。所有权限都在 list 文件中正确定义。发件人 ID 正确。API key 正确。

最佳答案

我不确定返回空白注册 ID 的确切位置,但重要的是要认识到:

GCMRegistrar.register(this, "517739810110");  

是一个异步事件,不会立即发生。所以调用:

GCMRegistrar.getRegistrationId(this);

紧接着不会给你注册 ID 只有一个空字符串。为了在您的设备向 GCM 服务器注册后正确获取注册 ID,您需要在 GCMBaseIntentService 中处理以下回调:

protected void onRegistered(Context context, String registrationId)

这是您将获得注册 ID 的地方,也是您应该向应用程序服务器注册的地方。你应该使用 GCM client sample作为您如何执行此操作的指南:

@Override
protected void onRegistered(Context context, String registrationId) {
Log.i(TAG, "Device registered: regId = " + registrationId);
displayMessage(context, getString(R.string.gcm_registered,
registrationId));
ServerUtilities.register(context, registrationId);
}

您还应该了解 GCM 客户端示例如何在其 DemoActivity 中注册:

final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
// Automatically registers application on startup.
GCMRegistrar.register(this, SENDER_ID);
}

请注意,它不会在调用 register() 方法后立即查询注册 ID。

关于android - 为什么 GCM 为某些 Android 设备返回空注册 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14376909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com