GCM:Android小部件。基于WidgetID生成令牌

时间:2016-04-01 17:02:12

标签: android google-cloud-messaging android-widget

我是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生成令牌?

1 个答案:

答案 0 :(得分:0)

我还没有尝试创建小部件,但是对于GCM,每个小部件都必须有2个注册令牌。如果您在创建窗口小部件时能够调用Mobile responsive container width,并将它们分开存储,则看起来它可以正常工作。