我是Android应用程序开发的新手,并且想知道是否有人可以帮助我找出问题。
我正在创建一个具有以下形式的小部件 [文字视图] [+] [ - ]
文本视图显示一个数字,按+按钮增加一个数字,按 - 按钮减少数字。
加号和减号按钮与我的服务器交互,后者发回一个显示在文本视图中的计数值。
这个小部件可以安装在多个Android手机上,并且在任何时候都应该是最新的。
为实现这一目标,我整合了Google云端消息,向所有已注册的小部件发送带有计数值的推送通知。
当小部件安装在不同的手机上时,一切正常。
但是,如果我在同一部手机上安装两个小部件,我从Google收到的令牌是相同的。附上相关代码
try {
tokenPerWidgetId.put(appWidgetId, instanceId.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null));
Log.v("RegisterationToken", registerToken);
} catch (IOException ie) {
Log.v("RegisterationToken", "Failed");
setViewsOnError(views, " Could not register with Google. Please re-install");
}
我理解为什么它会像Google Docs一样发生,getToken第一次从服务器获取令牌,有时则返回令牌。
但是,如何基于AppWidgetId生成令牌?