Я учусь обрабатывать Push-уведомления OneSignal на устройствах Android.Проблема в том, что, когда приложение закрыто, когда я получаю уведомление, хотя я определил необходимые функции (я полагаю), оно все равно открывает «Активность всплеска», которая определяется как MAIN LAUNCHER в манифесте.Мне нужно открыть другое действие с данными полезной нагрузки в нем.Ссылка, на которую я ссылался при создании этих кодов: это , и я видел ссылку на этот ответ .Я только показываю соответствующий код, так как этот проект классифицирован.
Вот мой файл манифеста.
<application
android:name="packageName.CustomAppName"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT"
android:value="DISABLED"/>
<activity
android:name="anotherPackageName.SplashActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="anotherPackageName.PaymentActivity"
android:screenOrientation="portrait" />
<service
android:name="somepackagename.NotificationsForPayment"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE">
<intent-filter>
<action android:name="com.onesignal.NotificationExtender" />
</intent-filter>
</service>
</application>
Вот мой класс приложения, в котором я определяю службу OneSignal.
public class CustomAppName extends Application {
private static CustomAppName instance;
public static CustomAppName getInstance() {
return instance;
}
public void onCreate() {
super.onCreate();
OneSignal.startInit(this)
.setNotificationOpenedHandler(new CustomNotificationOpening())
.init();
instance = this;
}
}
Вот мой класс CustomNotificationOpening.
public class CustomNotificationOpening implements OneSignal.NotificationOpenedHandler {
@Override
public void notificationOpened(OSNotificationOpenResult notification) {
notification.notification.payload.additionalData.names();
JSONObject data = notification.notification.payload.additionalData;
Intent intent = new Intent(CustomAppName.getInstance(), PaymentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("paymentModel", data);
CustomAppName.getInstance().startActivity(intent);
}
А вот мой класс NotificationsForPaymentкоторый происходит от NotificationExtenderService.
public class NotificationsForPayment extends NotificationExtenderService {
@Override
protected boolean onNotificationProcessing(OSNotificationReceivedResult notification) {
NotificationExtenderService.OverrideSettings overrideSettings = new NotificationExtenderService.OverrideSettings();
overrideSettings.extender = new NotificationCompat.Extender() {
@Override
public NotificationCompat.Builder extend(NotificationCompat.Builder builder) {
// Sets the background notification color to Red on Android 5.0+ devices.
Bitmap icon = BitmapFactory.decodeResource(CustomAppName.getInstance().getResources(),
R.drawable.ic_os_notification_fallback_white_24dp);
builder.setLargeIcon(icon);
return builder.setColor(new BigInteger("FF0000FF", 16).intValue());
}
};
OSNotificationDisplayedResult displayedResult = displayNotification(overrideSettings);
}
Я действительно не знаю, где я делаю неправильно.Когда приложение открыто, когда я нажимаю на уведомление, я вижу, что срабатывает функция «NotificationOpened».Но когда он был закрыт, так как я не могу отладить программу, а уведомление открывает всплывающее окно, я знал, что пришло время задать этот вопрос, потому что ни один из найденных ответов не сработал.Есть ли способ открыть другое действие с конкретными данными из уведомления, когда приложение было закрыто?Любая помощь приветствуется, большое спасибо.