У меня не работают push-уведомления, потому что я использую старый SDK Urban Airship (теперь переименованный просто в Airship). Я использую версию 8.3, и мне нужно обновить ее до версии 9.0.0. Я читаю https://github.com/urbanairship/android-library/blob/master/documentation/migration/migration-guide.md для получения инструкций по обновлению. Я нашел этот раздел, который имеет отношение к моему делу:
UrbanAirship Library 8.x to 9.0.0
GCM
All of the GCM classes have been moved into the package
com.urbanairship.push.gcm. If you have manually added theGcmPushReceiverorUAInstanceIDListenerServicein your manifest, please update the entries.
Я нашел два файла AndroidManifest.xml в своем исходном коде:
C:\Users[путь]\app\src\main\AndroidManifest.xml
<!-- Optional: Receives push and registration events from the Urban Airship SDK. -->
<intent-filter>
<action android:name = "com.urbanairship.push.CHANNEL_UPDATED"/>
<action android:name = "com.urbanairship.push.OPENED"/>
<action android:name = "com.urbanairship.push.DISMISSED"/>
<action android:name = "com.urbanairship.push.RECEIVED"/>
<category android:name = "${applicationId}"/>
</intent-filter>
``
<service
android:name = "com.urbanairship.push.UAInstanceIDListenerService"
android:exported = "false" >
<intent-filter android:priority = "-999" >
<action android:name = "com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<receiver
android:name = "com.urbanairship.push.GcmPushReceiver"
android:permission = "com.google.android.c2dm.permission.SEND" >
<intent-filter android:priority = "-999" >
<action android:name = "com.google.android.c2dm.intent.RECEIVE" />
<action android:name = "com.google.android.c2dm.intent.REGISTRATION" />
<category android:name = "${applicationId}" />
</intent-filter>
</receiver>
Вопрос 1. Когда в инструкции предлагается обновить записи in your manifest, это относится к первому или второму AndroidManifest.xml файлу, который я перечислил выше? Я предполагаю, что это может относиться только к C:\Users[path]\app\src\main\AndroidManifest.xml, потому что C:\Users\[path]\app\build\intermediates\exploded-aar\com.urbanairship.android\urbanairship-sdk\8.3.2\AndroidManifest.xml будет автоматически генерироваться при компиляции приложения.
Вопрос 2. Когда в инструкции сказано, что in your manifest, please update the entries, это означает удалить добавленные вручную строки, потому что пакет com.urbanairship.push.gcm уже включает GcmPushReceiver и UAInstanceIDListenerService и он будет автоматически заботиться об этом?
Спасибо.
ОБНОВЛЕНИЕ 1: Глядя на файл Android.Manifest.xml в https://github.com/urbanairship/android-library/blob/master/urbanairship-gcm/src/main/AndroidManifest.xml, мой должен выглядеть так после обновления до версии 9.7.1, правильно? Затем я должен включить в свой проект файлы/классы, перечисленные в https://github.com/urbanairship/android-library/tree/master/urbanairship-gcm/src/main/java/com/urbanairship/push/gcm. Правильный?
Теперь я использую это в своем build.gradle (Module: app):
// Urban Airship SDK
//compile 'com.urbanairship.android:urbanairship-sdk:8.3.+'
implementation 'com.urbanairship.android:urbanairship-fcm:9.7.1'
Мне также пришлось сделать следующее, чтобы избавиться от некоторых ошибок, которые я изначально видел при использовании implementation 'com.urbanairship.android:urbanairship-fcm:9.7.1':
compileSdkVersion 23 на compileSdkVersion 28 в `build.gradle (Модуль: приложение)Я также использовал File > Invalidate Caches / Restart... на всякий случай, чтобы убедиться, что все обновилось после того, как я изменил файл build.gradle (Module: app).