Вопрос:

Android 23+ - исключить регистрационный идентификатор GCM из резервной копии

android google-cloud-messaging android-6.0-marshmallow android-backup-service

2773 просмотра

3 ответа

1811 Репутация автора

У меня есть приложение, которое использует Azure для отправки push-уведомлений. Azure, в свою очередь, использует GCM для отправки на устройства Android.

Я замечаю, что у меня есть предупреждение в моем AndroidManifest.xml заявлении

На SDK версии 23 и выше данные вашего приложения будут автоматически сохранены и восстановлены при установке приложения. Регид GCM не будет работать при восстановлении, поэтому вы должны убедиться, что он исключен из резервного набора. Используйте атрибут android: fullBackupContent, чтобы указать ресурс @xml, который определяет файлы для резервного копирования.

У меня есть следующие инструкции здесь https://developer.android.com/training/backup/autosyncapi.html?hl=in#configuring

однако я озадачен тем, как исключить regID GCM из резервной копии? Вот мои текущие настройки.

манифест

<application
        android:allowBackup="true"
        android:fullBackupContent="@xml/backup_scheme"
        ........

Рез / XML / backup_scheme.xml

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

Что я ставлю как путь? Должен ли я иметь физический файл где-то, что я исключаю?

ОБНОВИТЬ

Так что я думаю, что понял это. В моем файле RegistrationIntentService.java я храню регистрационный идентификатор пользователя в общих настройках под строкой «регистрационный идентификатор». Итак, я предполагаю, что я использую следующее ...

<exclude domain="sharedpref" path="registrationID"/>

правильно?

Автор: Phil Источник Размещён: 22.08.2016 08:23

Ответы (3)


5 плюса

1811 Репутация автора

Решение

Так что я понял это. В моем файле RegistrationIntentService.java я храню регистрационный идентификатор пользователя в общих настройках под строкой «регистрационный идентификатор». Поэтому используйте следующее в файле backup_scheme.xml ...

<exclude domain="sharedpref" path="registrationID"/>
Автор: Phil Размещён: 23.08.2016 03:20

6 плюса

1594 Репутация автора

Я столкнулся с той же проблемой, и я собирался последовать за принятием ответа, но оказалось, что это не то, что должно быть сделано.

Что я сделал, так это установил fullBackupContentProperty в своем манифесте перед созданием файла backup_scheme.xml. Поэтому, конечно, Android Studio жаловалась на предупреждение, но предоставила мне исправление для автоматической генерации этого файла.

Применение исправления сгенерировало следующий файл:

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    <!-- Remove the following "exclude" elements to make them a part of the auto backup -->
    <exclude
        domain="database"
        path="attendee.db" />
    <exclude
        domain="database"
        path="whova_messages.db" />
    <exclude
        domain="database"
        path="photo.db" />
    <exclude
        domain="database"
        path="agenda.db" />
    <exclude
        domain="database"
        path="ebb.db" />
    <exclude
        domain="database"
        path="vertical.db" />
    <exclude
        domain="database"
        path="whova.db" />
    <!-- Exclude the shared preferences file that contains the GCM registrationId -->
    <exclude
        domain="sharedpref"
        path="WhovaMessagePrefFile.xml" />
    <exclude
        domain="sharedpref"
        path="APP_RATER.xml" />
    <exclude
        domain="sharedpref"
        path="WhovaPrefFile.xml" />
</full-backup-content>

Обратите внимание <!-- Exclude the shared preferences file that contains the GCM registrationId -->

Поэтому я предполагаю, что вы должны исключить весь файл общих настроек, содержащий идентификатор GCM, а не только ключ.

Жаль, что документация не делает ее очень ясной, а также плохо, что мы должны исключить и весь файл из резервной копии.

Автор: Simon Ninon Размещён: 11.01.2018 12:52

7 плюса

765 Репутация автора

После дальнейшего изучения ответа @Simon, я думаю, что нам все равно нужно заменить имя файла, указанное в файле, Pathкогда xml-файл дескриптора резервной копии автоматически генерируется из быстрого исправления в Android Studio. Я проверил каталог shared_prefs в одном из моих приложений, которое внедрило Firebase Cloud Messaging и обнаружил следующие файлы настроек GCM:

введите описание изображения здесь

Таким образом, backup_descriptor.xml будет:

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    <!-- Exclude the shared preferences file that contains the GCM registrationId -->
    <exclude
        domain="sharedpref"
        path="com.google.android.gms.appid.xml"/>
    <exclude
        domain="sharedpref"
        path="com.google.android.gms.measurement.prefs.xml"/>
</full-backup-content>
Автор: CodePlay Размещён: 07.08.2018 03:20
Вопросы из категории :
32x32