質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

4522閲覧

GCMサーバーから勝手に登録解除されてしまうことへの解決方法

hiroto_online

総合スコア11

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

1クリップ

投稿2014/08/15 07:20

Androidアプリを開発しているのですが、一部デバイスで通知が来ない不具合があります。
デバッグを行ってみたところ、アプリを起動時にはGCMサーバーへはregistration idは登録されています。
その後Webサーバーからアプリへメッセージングを行ってみると、送り先のアプリのデバッグが開始されるのですがデバッグの最初にonUnregisteredメソッドが呼び出されてしまい、GCMサーバーからregistration idが解除されているようです。

デバッグ中の端末は、Galaxy tabでAndroid4.0.4です。
アプリをアンインストールしたり、gcmサーバーから登録解除するコードが呼び出されたりしているわけでもありません。
ちなみに他のアプリ(LINEなどのアプリ)の通知は届きます。
また、パッケージ名を変えて同じアプリを作成し、動作させてみたのですが、こちらの通知は届きます。
(これが原因でしょうか。。。)

どなたか解決方法または通知が届かない原因をお教え頂けないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

同様と思われるトラブルを経験したことが有りますが、おそらく原因はサーバーサイドにはありません。

gcm.jarでは内部的にSharedPreferencesを使っており、SharedPreferencesには一部端末で値の保存ができなくなる機種依存問題があります。(詳細は以下のエントリ)
http://alpha.mixi.co.jp/2013/11572/

以下のライブラリ内のコードにパッチが有るのでそれを当てれば解決するかもしれません。

https://github.com/mixi-inc/Android-Device-Compatibility/blob/master/AndroidDeviceCompatibility/src/main/java/jp/mixi/compatibility/android/content/SharedPreferencesCompat.java

public class YourApplication extends android.app.Application { @Override void onCreate() { super.onCreate(); SharedPreferencesCompat.injectPrefencesDirIfNeeded(this); } }

投稿2014/08/18 05:52

YukiYoshida

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroto_online

2014/08/19 08:43

回答ありがとうございます。 また、ご丁寧にサンプルコードなどありがとうございます。 現在問題となっているのは、「アプリ内でRegistration idが保存されない」ではなく、アプリ内には保存されているのですがGCMから勝手に登録解除されてしまう点です。 言い換えると、アプリ内にはGCMに登録したRegistration IDがSharedPreferencesに保存されていますが、アプリが通知を受け取ると即座に、Googleが提供するコードであるGCMIntentServiceクラスがのonUnregisteredが呼び出され、「Device unregistered」および「From GCM: device successfully unregistered」というレスポンスが表示されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問