J'ai une application, avec des notifications Push implémentées.
Je veux comprendre la raison pour laquelle nous avons besoin de "GET_ACCOUNTS" (Android.permission.GET_ACCOUNTS), lors de la mise en œuvre de GCM? Certains utilisateurs expriment des inquiétudes concernant cette autorisation. J'ai utilisé cette autorisation dans le manifeste telle qu'elle a été donnée sur le site officiel ici .
Dans quelle mesure cette autorisation est-elle sûre? et si je le supprime de mon manifeste, les notifications Push fonctionneront-elles?
Il utilise une connexion existante pour les services Google. Pour les appareils antérieurs à la version 3.0, cela nécessite que les utilisateurs configurent leur compte Google sur leurs appareils mobiles. Un compte Google n'est pas obligatoire sur les appareils exécutant Android 4.0.4 ou supérieur.
C'est donc la raison de l'exigence de l'autorisation
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
pour lire le compte Google.
En savoir plus à ce sujet Présentation de GCM
La connexion au compte Google n'est plus nécessaire pour que GCM fonctionne. Vous n'avez donc pas besoin du Android.permission.GET_ACCOUNTS
autorisation.
Si vous utilisez l'API GCM avec GoogleCloudMessaging.register
), vous n'avez plus besoin de configurer le compte Google sur une version Android. Mais si vous utilisez la bibliothèque obsolète ( GCMRegistrar.register
), vous avez toujours besoin d'un compte Google sur les anciennes versions (avant ICS).
Plus de détails sur https://groups.google.com/forum/#!topic/Android-gcm/ecG-RfH-Aso . Un autre fil similaire est Pourquoi la connexion au compte Google est-elle requise pour que GCM fonctionne pour les appareils sous le système d'exploitation 4.0.4?
L'autorisation GET_ACCOUNTS n'est plus nécessaire pour que GCM fonctionne. Auparavant, il était nécessaire pour l'inscription à GCM, mais une récente mise à jour des services Play a cessé d'utiliser le compte Google, même sur Froyo et Gingerbread. Si vous vous inscrivez à GCM avec Play Services (c'est-à-dire avec GoogleCloudMessaging.register), vous n'avez plus besoin de cette autorisation sur aucune version Android. Si vous utilisez la bibliothèque obsolète (GCMRegistrar.register), vous avez toujours besoin d'un compte Google sur la version antérieure à la version 4.0.4, qui nécessite cette autorisation.
Source (publié sur le groupe Google Android-gcm par un développeur Google):
Quelques antécédents:
L'enregistrement Froyo et Gingerbread est implémenté dans GoogleServicesFramework, en utilisant le compte Google pour l'enregistrement. Cela a entraîné de nombreuses erreurs d'authentification pour les personnes dont le compte n'était pas en bon état.
À partir d'ICS, GCM ne dépend pas ou n'utilise pas le compte Google - vous pouvez l'utiliser avant d'ajouter un compte ou sans aucun compte.
La mise à jour "Play Services" implémente le nouveau schéma sur tous les appareils - mais il semble qu'un petit nombre d'appareils ont des problèmes avec cela, nous étudions - mais les chiffres sont bien inférieurs à ceux de l'ancien schéma.
Comme tout le monde ici l'a dit, GET_ACCOUNT
est nécessaire pour les appareils Android inférieurs à 4.0.4.
Si vous êtes comme moi et que vous avez installé une bibliothèque qui ajoute automatiquement cette autorisation mais que vous n'en avez pas besoin, vous pouvez demander au AndroidManifest
de supprimer l'autorisation en ajoutant l'autorisation à avec le tools:node="remove"
attribut comme ceci:
Dans votre AndroidManifest.xml
fichier, assurez-vous que le xmlns:tools
attribuez-le défini dans votre balise manifest
, puis ajoutez l'autorisation avec remove
set:
<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>
Mot ou avertissement que cela ne fonctionne jamais pour moi mais je sais que cela a fonctionné pour les autres. Si vous pouvez voir ce que je fais mal ou avoir plus d'informations à ce sujet, veuillez commenter!
* Modifier: un rapport de bogue est ouvert pour que cette fonctionnalité fonctionne: https://bugzilla.xamarin.com/show_bug.cgi?id=4815
quand vous utilisez
compiler 'com.google.Android.gms: play-services: 7.5.0' ajouter le fichier build.gradle signifie que l'autorisation GET_ACCOUNT a été ajoutée automatiquement.
Je ne pense pas que ce soit réellement le cas. Je l'ai testé sur un appareil Gingerbread fraîchement réinitialisé avec un nouveau compte Gmail et je pouvais très bien recevoir des messages GCM sans cette autorisation. La documentation est donc FAUX.
GET_ACCOUNT consiste à vérifier si l'utilisateur a synchronisé le compte Google sur mobile et à générer la valeur clé pour chaque utilisateur (chaque compte Google). Cela est nécessaire si l'appareil exécute une version inférieure à Android 4.0.4.