プッシュ通知が実装されたアプリがあります。
GCMの実装中に「GET_ACCOUNTS」(Android.permission.GET_ACCOUNTS)が必要な理由を理解したいのですが?一部のユーザーは、この許可に関して懸念を表明しています。公式サイトで与えられているように、マニフェストでこの許可を使用しました here 。
この許可はどのくらい安全ですか?これをマニフェストから削除すると、プッシュ通知は機能しますか?
Googleサービスの既存の接続を使用します。 3.0より前のデバイスの場合、ユーザーはモバイルデバイスでGoogleアカウントをセットアップする必要があります。 Googleアカウントは、Android 4.0.4以降を実行しているデバイスでは必要ありません。
これが許可の要件の理由です
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
googleアカウントを読む。
これについて詳しく読む GCM Overview
GCMが機能するためにGoogleアカウントのログインは不要になりました。したがって、Android.permission.GET_ACCOUNTS
許可。
GoogleCloudMessaging.register
)でGCM APIを使用している場合、AndroidバージョンでGoogleアカウントを設定する必要はありません。ただし、廃止されたライブラリ( GCMRegistrar.register
)を使用している場合は、古いバージョン(ICSより前)で引き続きGoogleアカウントが必要です。
詳細については https://groups.google.com/forum/#!topic/Android-gcm/ecG-RfH-Aso をご覧ください。別のシミュレータスレッドは GCMが4.0.4 OS未満のデバイスで動作するためにgoogleアカウントのログインが必要な理由は何ですか?
GCMが機能するためにGET_ACCOUNTS権限は不要になりました。以前はGCMへの登録に必要でしたが、最近のPlay Servicesのアップデートでは、FroyoとGingerbreadでもGoogleアカウントの使用を停止しました。 Playサービスを使用してGCMに登録する場合(つまり、GoogleCloudMessaging.registerを使用する場合)、Androidバージョン。非推奨ライブラリ(GCMRegistrar.register)を使用している場合、 4.0.4より前のバージョンのGoogleアカウントがまだ必要であり、その許可が必要です。
ソース (Google開発者がAndroid-gcm Googleグループに投稿):
背景:
FroyoとGingerbreadの登録は、登録にGoogleアカウントを使用して、GoogleServicesFrameworkで実装されます。これにより、アカウントが良好な状態ではなかったユーザーに対して多くの認証エラーが発生しました。
ICSからは、GCMはGoogleアカウントに依存または使用しません。アカウントを追加する前に、またはアカウントなしで使用できます。
「Play Services」アップデートは、すべてのデバイスに新しいスキームを実装しています-しかし、少数のデバイスでこれに問題があるようです。調査中です-しかし、数字は古いスキームのものよりはるかに低いです。
ここの他のみんなが言ったように、Android 4.0.4より前のデバイスにはGET_ACCOUNT
が必要です。
私と同じで、この許可を自動的に追加するライブラリをインストールしたが、それを必要としない場合は、AndroidManifest
にtools:node="remove"
属性で許可を追加することで許可を削除するように指示できます。そう:
AndroidManifest.xml
ファイルで、manifest
タグで定義されたxmlns:tools
属性を確認し、remove
を設定して許可を追加します。
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
...>
...
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" tools:node="remove" />
...
</manifest>
これは実際には私には役に立たないという言葉または警告ですが、他の人には役立ったことを知っています。私が間違っているかもしれないことを見ることができるか、それについてもっと情報があれば、コメントしてください!
*編集:この機能を動作させるためのバグレポートが公開されています: https://bugzilla.xamarin.com/show_bug.cgi?id=4815
使用するとき
「com.google.Android.gms:play-services:7.5.0」をコンパイルしますbuild.gradleファイルを追加すると、GET_ACCOUNT権限が自動的に追加されます。
これは実際にはそうではないと思います。工場出荷時にリセットしたGingerbreadデバイスで新しいGmailアカウントを使用してテストしましたが、その許可なしにGCMメッセージを正常に受信できました。したがって、ドキュメントは間違っています。
GET_ACCOUNTは、ユーザーがモバイルでGoogleアカウントを同期したかどうかを確認し、各ユーザー(各Googleアカウント)のキー値を生成します。これは、デバイスがAndroid 4.0.4よりも低いバージョンを実行している場合に必要です。