web-dev-qa-db-ja.com

GCMの使用中にGET_ACCOUNTS権限-これが必要な理由

プッシュ通知が実装されたアプリがあります。

GCMの実装中に「GET_ACCOUNTS」(Android.permission.GET_ACCOUNTS)が必要な理由を理解したいのですが?一部のユーザーは、この許可に関して懸念を表明しています。公式サイトで与えられているように、マニフェストでこの許可を使用しました here

この許可はどのくらい安全ですか?これをマニフェストから削除すると、プッシュ通知は機能しますか?

42
Vamsi Challa

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アカウントのログインが必要な理由は何ですか?

61
Pankaj Kumar

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」アップデートは、すべてのデバイスに新しいスキームを実装しています-しかし、少数のデバイスでこれに問題があるようです。調査中です-しかし、数字は古いスキームのものよりはるかに低いです。

13
Eran

ここの他のみんなが言ったように、Android 4.0.4より前のデバイスにはGET_ACCOUNTが必要です。

私と同じで、この許可を自動的に追加するライブラリをインストールしたが、それを必要としない場合は、AndroidManifesttools: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

6
hvaughan3

使用するとき

「com.google.Android.gms:play-services:7.5.0」をコンパイルしますbuild.gradleファイルを追加すると、GET_ACCOUNT権限が自動的に追加されます。

  • たとえば、開発者がプロ​​ジェクトでadmobのみを使用する必要がある場合、build.gradleファイルでこの権限のみを指定することを意味しますcompile 'com.google.Android.gms:play-services-ads:7.5.0'別の説明がある場合は、このリンクを参照してください https://developers.google.com/Android/guides/setup
3
user2431979

これは実際にはそうではないと思います。工場出荷時にリセットしたGingerbreadデバイスで新しいGmailアカウントを使用してテストしましたが、その許可なしにGCMメッセージを正常に受信できました。したがって、ドキュメントは間違っています。

1
markostamcar

GET_ACCOUNTは、ユーザーがモバイルでGoogleアカウントを同期したかどうかを確認し、各ユーザー(各Googleアカウント)のキー値を生成します。これは、デバイスがAndroid 4.0.4よりも低いバージョンを実行している場合に必要です。

0
Brinda K