Я расширяю BaseIntentReceiver
в новый класс PushIntentReceiver
, предназначенный для выполнения различных действий от пар ключ/значение в объектах push-уведомлений.Android Urban Airship 6.0.1, не способный перехватывать действия push-уведомления
Хотя мои push-уведомления отображаются правильно, PushIntentReceiver никогда не вызывается. Поэтому щелчок на уведомлении, кажется, ничего не делает. Каждый метод имеет внутри него лог-тег, такой как
@Override
protected void onBackgroundPushReceived(Context context, PushMessage message) {
Log.i(TAG, "Received background push message: " + message);
}
, но ничего не отображается в LogCat. Независимо от того, является ли это методом регистрации или методом кликов нажатием кнопки или что-то еще. Точно так же мои контрольные точки не попадают в эти функции.
Почему это? Я включил соответствующие части моего AndroidManifest. Предыдущей версией UrbanAirship, которая была в этом приложении, была версия, в которой Amazon UA была разделена с Android UA, когда вы, ребята, впервые создали Amazon UA. Поэтому я не знаю, был ли это Android UA 5.0 или 4.x, но мой перехват Push Notification через BroadcastReceivers действительно работал в этой старой версии библиотеки. Теперь все было реорганизовано в пути UA 5.1.x +, и я не могу заставить его работать.
Insight оценил
Это соответствующая часть моей AndroidManifest.xml
<!-- REQUIRED for Urban Airship -->
<service
android:name="com.urbanairship.push.PushService"
android:label="Push Notification Service" />
<!-- Required for analytics -->
<service
android:name="com.urbanairship.analytics.EventService"
android:label="Event Service" />
<!-- Required for Actions -->
<service android:name="com.urbanairship.actions.ActionService" />
<!-- Required for Rich Push -->
<service android:name="com.urbanairship.richpush.RichPushUpdateService" />
<!-- OPTIONAL for Urban Airship Location (for segments support) -->
<service
android:name="com.urbanairship.location.LocationService"
android:label="Segments Service" />
<!-- This is required for persisting preferences related to push and location -->
<!-- MODIFICATION REQUIRED - Replace PACKAGE_NAME with your package name -->
<provider
android:name="com.urbanairship.UrbanAirshipProvider"
android:authorities="com.myapp.app.urbanairship.provider"
android:exported="true"
android:multiprocess="true"
android:permission="com.myapp.app.permission.UA_DATA" />
<!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
<!-- Replace the receiver below with your package and class name -->
<receiver
android:name="com.myapp.app.controllers.push.PushIntentReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.urbanairship.push.CHANNEL_UPDATED" />
<action android:name="com.urbanairship.push.OPENED" />
<action android:name="com.urbanairship.push.RECEIVED" />
<action android:name="com.urbanairship.push.DISMISSED" />
<category android:name="com.myapp.app" />
</intent-filter>
</receiver>
<receiver android:name="com.urbanairship.CoreReceiver"
android:exported="false">
<intent-filter android:priority="-999">
<action android:name="com.urbanairship.push.OPENED" />
<!-- MODIFICATION REQUIRED - Use your package name as the category -->
<category android:name="com.myapp.app" />
</intent-filter>
</receiver>
<!-- REQUIRED for PlayServiceUtils.handleAnyPlayServicesError to handle Google Play Services recoverable errors. -->
<activity
android:name="com.urbanairship.google.PlayServicesErrorActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- REQUIRED for GCM -->
<receiver
android:name="com.urbanairship.push.GCMPushReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<!-- MODIFICATION REQUIRED - Use your package name as the category -->
<category android:name="com.myapp.app" />
</intent-filter>
</receiver>
<!-- end Urban Airship tags -->
Все, кажется, для того, чтобы вы в курсе. Мне может потребоваться увидеть ваш PushIntentReceiver, полный манифест и, возможно, файл build.gradle, чтобы выяснить, что происходит не так. Вы можете отправить их на адрес [email protected], если хотите сохранить их конфиденциальными. Одна вещь, с которой я сталкиваюсь, - это переопределить onReceive, не обращаясь к реализации супер в PushIntentReceiver. Возможно, проверьте это. – ralepinski
@ralepinski Я отправил это точное сообщение на [email protected] два дня назад – CQM
@ralepinski Я не переопределяю onReceive вообще, это также не делается в примерах приложений для городского дирижабля https://github.com/urbanairship /android-samples/blob/master/RichPushSample/src/com/urbanairship/richpush/sample/PushReceiver.java – CQM