我与谷歌云端通讯功能的应用程序,并宣称这样也可选fullBackupContent
:恢复从排除SharedPreference文件的一些XML字段(使用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
包含GCM注册ID,应当从被排除像上面的备份(一些信息HERE和HERE)。但不仅这一个字段在偏好xml中......它还包含一些“内部”设置,例如启用/禁用自定义推送类别或标记为firstRunShowDialogAboutPushMessages
(默认为true,解除对话框设置标志为false)。
而且一切都很好,太好了...上面的代码目前在Google Play中,现在我计划发布更新。在测试过程中,我注意到这个备份功能也在更新的情况下执行......任何人都可以确认它应该吗?应用目标:API24,测试设备:当前API25。 Doc说:
无论何时从Play商店安装应用程序,设备安装期间(系统安装以前安装的应用程序时)或运行adb安装,数据都会恢复。还原操作发生在APK安装后,但应用程序可供用户启动之前。
所以设备设置或ADB期间...是指通过谷歌更新播放或签订GP版本安装文件也?没有任何账户/设备恢复,只是一个更新?据我看到...现在,当我发布新版本(即使没有排除push.xml
)这个文件将不备份,因为目前已经exlusion ...和更新将“重置”在应用程序中推设置(启用所有选项/类别并且firstRunShowDialogAboutPushMessages
= true,即使在用户选择退出时也是如此)。
那么我现在可以做什么?我可能会将GCM注册ID移动到SharedPreference
xml文件中,并仅排除此文件,但在下次更新时,所有GCM设置都将丢失,所以很糟糕......任何想法,在这种情况下的任何帮助?
我想这个更新是GCM/FCM令牌可能改变的情况。无论如何,你的应用程序做的第一件事 - 使用谷歌图书馆和它的谷歌库要求当前GCM/FCM令牌返回一个适当的令牌,无论是否更改或不。为什么您认为从SharedPrefs恢复令牌在更新的情况下是个好主意? – Stan
我不这么认为,所以我排除了共享喜好文件,就像所有的教程建议的那样,有问题的链接。问题是我还有一些其他的prefs存储在同一个文件中,我想离开/恢复(只丢失GCM/FCM令牌)。问题是:我可以防止不恢复特定的声明XML文件,当应用程序已经发布,我正在更新? – snachmsm
实际上,您应该只在该文件中存储FCM/GCM令牌(或任何其他应该/可能丢失的数据),因此您只会放弃该令牌。无法管理一个文件的键/值对,但只能管理整个文件。所以我建议你做更新计数 - 用FCM/GCM标记排除SP文件中的其他内容,或者声明一个新的SP文件,仅用于存储标记+添加一些迁移代码) – Stan