推送通知对我来说无法正常工作,因为我使用的是旧的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至9.0.0
GCM
所有GCM类都已移至
com.urbanairship.push.gcm
包中。如果您已在清单中手动添加了GcmPushReceiver
或UAInstanceIDListenerService
,请更新条目。
我在源代码中找到了两个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:查看https://github.com/urbanairship/android-library/blob/master/urbanairship-gcm/src/main/AndroidManifest.xml上的Android.Manifest.xml文件,一旦升级到V9.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
我也使用File > Invalidate Caches / Restart...
以防万一,以确保修改build.gradle (Module: app)
文件后所有内容都刷新。