在Android中同步Google Cloud Message

时间:2013-09-18 13:12:48

标签: android google-cloud-messaging

我使用谷歌云消息向设备发送推送消息,但它有很大的延迟发送(如果我手动点击同步谷歌帐户,消息来得及时)。 我希望当我打开我的应用程序(onResume活动)时,执行谷歌帐户的“强制同步”。

我试着这样做:

Bundle extras = new Bundle();
extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account account : accounts) {
    SyncAdapterType[] types = ContentResolver.getSyncAdapterTypes();
    for (SyncAdapterType type : types) {
        if (account.type.equals(type.accountType)) {
            boolean isSyncable = ContentResolver.getIsSyncable(account, type.authority) > 0;
            if (isSyncable) {
                ContentResolver.requestSync(account, type.authority, extras);
            }
        }
    }
}

但它尝试以各种方式同步所有帐户,并且它不起作用我的消息不会像我点击同步菜单按钮时那样。

我如何强制(以更好的方式)我的应用程序检查它是否在谷歌.cloud中有一些消息?

1 个答案:

答案 0 :(得分:0)

这不是您应该使用Google Cloud Messaging(或任何移动推送通知服务)的方式。使用GCM的关键是在应用程序未运行时接收消息,以便提醒用户他/她可能感兴趣的事件,并(希望)使他们启动您的应用程序。

当您的应用程序已经启动时,没有必要尝试查看服务器发送的任何待处理的GCM消息是否尚未发送。相反,您只需调用您的服务器并获取您需要向应用程序用户显示的所有数据(包括GCM消息中尚未到达的任何数据)。