GCM のすべての機能を実装しましたが、すべてが完全に機能します。アプリを起動するregId
と、すべてが正常に表示されます。しかし、時々、GCMIntent サービスが着信メッセージの受信を停止しているように見えます。GCM サービスに問題があるかどうか、および通知がデバイスに送信されたかどうかを確認する方法があるかどうかを知りたいです。以下は、登録するクライアント側のコードと、GCMIntent サービスです。
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
if(GCMRegistrar.isRegistered(this))
{
final String regId = GCMRegistrar.getRegistrationId(this);//app_preferences.getString(Constants.KEY_DEVICE_TOKEN, "");;
if(!regId.equals(""))
{
mRegIds= regId;
//sendIdToServer(regId);
Log.i("DEVICE TOKEN", regId);
is_gcm_registered = true;
}
}
else
{
GCMRegistrar.register(this, Constants.SENDER_ID);
is_gcm_registered = false;
}
GCM インテント サービス:
@Override
protected void onMessage(Context context, Intent intent) {
Log.e("GOT INCOMING MESSAGE","HI");
// My implementation
}
問題は、すぐに機能する場合と、通知を受け取るまでに最大 1 ~ 2 分かかる場合があることです。これは正常ですか?
編集: GCM Throttling http://developer.android.com/google/gcm/adv.html#throttling を読んでいて、メッセージが同じデバイスに一括で送信されると、アプリケーションがトークンを使い果たすと書かれています。GCM は Instant Messaging アプリケーションを実装する最良の方法ではないということですか?