0

J'ai une application avec fonction Google Cloud Messaging également en option fullBackupContent déclarée comme ceci:Restauration des champs XML à partir du fichier SharedPreference exclus (en utilisant fullBackupContent)

<application 
    android:fullBackupContent="@xml/backup_rules"> 

<?xml version="1.0" encoding="utf-8"?> 
<full-backup-content> 
    <exclude domain="sharedpref" path="push.xml"/> 
</full-backup-content> 

push.xml contient l'enregistrement GCM, qui devrait être exclu de sauvegarde comme ci-dessus (quelques informations HERE et HERE). Mais non seulement ce champ est dans les préférences xml ... il contient aussi des paramètres "internes" comme les catégories de push personnalisées activées/désactivées ou le flag firstRunShowDialogAboutPushMessages (la valeur par défaut est true, la boîte de dialogue ignorer est false).

Et tout fonctionne bien, trop bon ... code ci-dessus est actuellement dans Google Play et maintenant je prévois de publier la mise à jour. Au cours des tests, j'ai remarqué que cette fonctionnalité de sauvegarde est également effectuée en cas de mise à jour ... Quelqu'un peut-il confirmer qu'il devrait le faire? Cible des applications: API24, périphérique de test: API25 en cours. Doc dit:

Les données sont restaurées à chaque fois que l'application est installée, que ce soit dans le magasin Play, lors de l'installation de l'appareil (lorsque le système installe des applications précédemment installé) ou d'exécuter adb install. L'opération de restauration se produit après l'installation du fichier APK, mais avant que l'application ne puisse être lancée par l'utilisateur.

Ainsi lors de l'installation de l'appareil ouadb ... Est-ce cela signifie que la mise à jour via Google Play ou d'un fichier signé sur l'installation de la version GP aussi? Sans aucune restauration de compte/périphérique, juste une mise à jour? Dans la mesure où je vois ... Maintenant, quand je publie une nouvelle version (même sans exclure push.xml) ce fichier ne sera pas sauvegardé, car le courant a une exclusion ... et la mise à jour va "réinitialiser" les paramètres push dans l'application (permettant toutes les options/catégories et firstRunShowDialogAboutPushMessages = true, par défaut, même si l'utilisateur a désactivé cette option).

Alors, que puis-je faire maintenant? Je peux déplacer l'ID d'enregistrement GCM à SharedPreference fichier XML séparé et exclure seulement celui-ci, mais avec la prochaine mise à jour tous les paramètres GCM seront perdus de toute façon, si mal ... Toute idée, toute aide dans ce cas?

+0

Je suppose que cette mise à jour est un cas où le jeton GCM/FCM peut changer. Quoi qu'il en soit, la première chose que fait votre application - demande le jeton GCM/FCM actuel en utilisant google lib et google lib pour retourner un jeton approprié, quel que soit le changement ou non. Pourquoi pensez-vous que la restauration de jeton à partir de SharedPrefs est une bonne idée en cas de mise à jour? – Stan

+0

Je ne pense pas que ce soit, donc j'ai exclu le fichier de préférences partagées, comme tous les didacticiels suggèrent, les liens en question. Le problème est que j'ai aussi d'autres prefs stockés dans le même fichier, que je veux quitter/restaurer (ne perdez que le jeton GCM/FCM). Et la question est: puis-je empêcher de ne pas restaurer le fichier XML déclaré, lorsque l'application est déjà publiée et que je fais une mise à jour? – snachmsm

+0

En fait, vous ne devriez stocker que le jeton FCM/GCM (ou toute autre donnée qui devrait/pourrait être perdue) dans ce fichier afin de ne perdre que le jeton. Il n'y a aucun moyen de gérer la paire clé/valeur d'un fichier, mais uniquement le fichier entier. Je vous suggère donc de faire une mise à jour en comptant cela - exclure toute autre chose du fichier SP avec le jeton FCM/GCM OU déclarer un nouveau fichier SP pour le stockage de jetons + ajouter un peu de codez de migrationz) – Stan

Répondre

0

Je ne suis pas sûr de ce genre de confirmation avez-vous demandez à mon humble avis, mais, le documentation est déjà une bonne source de confirmation.

Que puis-je faire maintenant?

Vous pouvez également vérifier la solution suggérée dans ce SO post et visiter Testing Backup and Restore pour des informations utiles.

+0

J'ai un code excluant un fichier sharedpref important à l'intérieur de l'application publiée. Maintenant, je veux garder/restaurer ce fichier, car il ne devrait pas être supprimé. Il peut être supprimé uniquement lors de la configuration ou de l'adb du périphérique, comme le dit le DOC, mais maintenant je vois (test du fichier apk de mise à jour signé) mon fichier est exclu/supprimé aussi quand une simple mise à jour est en cours d'installation. dans une gamme plus large comme documenté ... ou je ne comprends pas ce que _during installation setup_ signifie ...) – snachmsm