我有一個應用程序,實施了推送通知。使用GCM時的GET_ACCOUNTS權限 - 爲什麼需要這樣做?
我想理解爲什麼我們需要「GET_ACCOUNTS」(android.permission.GET_ACCOUNTS),同時實現GCM?一些用戶正在對此權限提出擔憂。我在清單中使用了此許可,因爲它在官方網站here中給出。
此權限有多安全?如果我從我的清單中刪除這個推送通知的工作?
我有一個應用程序,實施了推送通知。使用GCM時的GET_ACCOUNTS權限 - 爲什麼需要這樣做?
我想理解爲什麼我們需要「GET_ACCOUNTS」(android.permission.GET_ACCOUNTS),同時實現GCM?一些用戶正在對此權限提出擔憂。我在清單中使用了此許可,因爲它在官方網站here中給出。
此權限有多安全?如果我從我的清單中刪除這個推送通知的工作?
它使用Google服務的現有連接。對於3.0 之前的設備,這需要用戶在其 移動設備上設置Google帳戶。運行Android 4.0.4或更高版本的設備 上不需要Google帳戶。
所以這是允許
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
閱讀谷歌帳戶的要求的原因。
瞭解更多關於這個GCM Overview
谷歌帳戶登錄時不再需要GCM工作。所以你不需要android.permission.GET_ACCOUNTS
權限。
如果您使用GCG API和GoogleCloudMessaging.register
),則不再需要在任何Android版本上配置Google帳戶。但是,如果您使用的是過時的庫(GCMRegistrar.register
),則舊版本(ICS之前)仍需要Google帳戶。
更多詳情,請登錄https://groups.google.com/forum/#!topic/android-gcm/ecG-RfH-Aso。另一個similer線程是Why google Account login is required for GCM to work for devices below 4.0.4 OS?
Okie ..有沒有其他的方式來做到這一點,沒有在明確表明這一點? –
@VamsiChalla:所有權限必須位於清單中。但是,如果您的'android:minSdkVersion'設置爲14或更高,我會將該文檔解釋爲意味着您不需要此權限。 – CommonsWare
@CommonsWare,感謝您的信息.. –
GET_ACCOUNT是驗證用戶是否同步了手機中的Google帳戶,併爲每個用戶(每個Google帳戶)生成鍵值。如果設備運行的版本低於Android 4.0.4,則這是必需的。
我不認爲這是事實。我使用新的Gmail帳戶在新設的工廠重置薑餅設備上進行了測試,未經許可即可收到GCM消息。所以文檔是錯誤的。
GCM不再需要GET_ACCOUNTS權限才能工作。它曾經是向GCM註冊所必需的,但最近的Play服務更新甚至在Froyo和Gingerbread上使用Google帳戶停止。如果您正在使用Play服務註冊GCM(即使用GoogleCloudMessaging.register),則不再需要任何Android版本的此權限。如果您使用的是過時的庫(GCMRegistrar.register),則仍然需要4.0.4版之前的Google帳戶,該帳戶需要該權限。
Source(由谷歌開發者在Android-GCM谷歌集團發佈):
一些背景資料:
升級Froyo和薑餅登記在 GoogleServicesFramework實現,使用谷歌賬號註冊。 這對於賬戶 未處於良好狀態的用戶會導致很多身份驗證錯誤。
從ICS開始,GCM不依賴或使用Google帳戶 - 您可以在添加帳戶或沒有任何帳戶之前使用它。
「播放服務」更新實施新方案對所有 設備 - 但似乎設備少數有 這個問題,我們正在調查 - 但數字遠遠高於 低與舊計劃。
當您使用
編譯 'com.google.android.gms:發揮服務:7.5.0' 添加的build.gradle文件意味着GET_ACCOUNT權限自動添加。
其他人一樣在這裏說,需要爲Android設備比4.0.4低GET_ACCOUNT
。
如果你和我一樣,都安裝了一個庫,自動將此權限,但你不需要它,你可以告訴AndroidManifest
通過將許可與tools:node="remove"
屬性,像這樣刪除的權限:
在你AndroidManifest.xml
文件,確保xmlns:tools
屬性在您manifest
標籤定義,然後用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>
Word或警告,這實際上從未對我的作品,但我知道它爲別人工作。如果你能看到我可能做錯了什麼或有任何更多的信息,請評論!
*編輯:有一個bug報告開得到這個功能工作: https://bugzilla.xamarin.com/show_bug.cgi?id=48153
你有沒有試過* *推送通知沒有GET_ACCOUNTS許可?看起來,嘗試它比詢問和等待答覆要快。一旦知道,請將結果發佈爲答案。 – 323go
GET_ACCOUNT用於驗證用戶是否同步了移動版Google帳戶,併爲每個用戶(每個Google帳戶)生成關鍵值。如果設備運行的版本低於Android 4.0.4,則這是必需的。 –
Okie ..除此之外,還有其他方式可以做到嗎? –