Raj*_*Raj 4 android google-api google-cloud-messaging
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我可以成功地从某些Android设备获取GCM的注册ID,但不能获取所有Android设备的注册ID.GCM返回某些Android设备的空注册ID.我使用GCM.jar文件作为第三方工具,它返回注册ID.所有权限都在清单文件中正确定义.发件人ID是正确的.API密钥是正确的.
我不确定返回空白注册ID的确切位置,但重要的是要意识到:
GCMRegistrar.register(this, "517739810110");
Run Code Online (Sandbox Code Playgroud)
是一个异步事件,不会立即发生.所以打电话:
GCMRegistrar.getRegistrationId(this);
Run Code Online (Sandbox Code Playgroud)
之后不会给你注册ID只有一个空白字符串.为了在设备向GCM服务器注册后正确获取注册ID,您需要在GCMBaseIntentService中处理以下回调:
protected void onRegistered(Context context, String registrationId)
Run Code Online (Sandbox Code Playgroud)
在这里,您将获得注册ID以及应在何处注册应用程序服务器.您应该使用GCM客户端示例作为指导,了解如何执行此操作:
@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);
}
Run Code Online (Sandbox Code Playgroud)
您还应该遵循GCM客户端示例在其DemoActivity中注册的方式:
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
// Automatically registers application on startup.
GCMRegistrar.register(this, SENDER_ID);
}
Run Code Online (Sandbox Code Playgroud)
请注意,在调用register()方法后,它不会立即查询注册ID.
| 归档时间: |
|
| 查看次数: |
6961 次 |
| 最近记录: |