2016-05-18 1 views
1

プッシュ通知を送信するためにユーザーのデバイスを識別したいとします。以前はIMEIを使用していましたが、IMEIには特別な権限が必要です。また、タブレットにはIMEIがありません。Androidデバイスを一意に識別する:UUIDとInstanceID

私はidシステムの更新について考えて、Google自身がInstanceIDを使用することを推奨していることを知りました。

これは細かい方法のように思えるが、2つの点に注意してください。

  1. トークンは、それらを更新し、古い
  2. を削除するには、私のバックエンドサーバーでそれらを管理する暗示され、変更される可能性がありますがグーグルを持っているユーザーが必要ですPlayサービス。この要件はいくらですか?すべてのユーザーが既にGoogle Playサービスを利用しているわけではありませんか?

彼らが提案する他の解決策は、UUIDを使用していますが、本当にこの番号はどれくらいユニークですか?この方法で衝突を準備する必要がありますか?

+1

*すべてのユーザーが既にGPSを持っているわけではありませんか?*いいえ –

+0

@TimCastelijnsに統計情報がありますか? – MichelReap

+0

わかりませんが、私はそれがユーザーやデバイスメーカーの国に依存すると信じています –

答えて

-1

Androidフレームワークで提供されているAndroid IDを使用できます。これは、デバイスのセットアップ時に生成されます。これは余分な権限を必要としません。

Settings.Secure.getString(getBaseContext().getContentResolver(), Settings.Secure.ANDROID_ID);

編集:いくつかのケースでは (工場出荷時設定へのリセットを)これが変更されます。これらの場合は使用できます:これは使用されています final String deviceId = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); if (deviceId != null) { return deviceId; } else { return android.os.Build.SERIAL; }

+0

この問題については、これが一意でない可能性があることを説明するいくつかのスレッドがあります – Christian

+0

これは工場出荷時の設定にリセットされます。あなたのGCMはデバイスに到達しません。 –

+0

アンドロイドと一緒にサーバーに送信するプッシュGCM IDは、間隔を置いてから更新する必要があります。彼らが変わることができるからです。これがお勧めです。 –

関連する問題