Что ж, чтобы решить эту проблему, первым делом нужно более четко прочитать документацию (что я не делал), поэтому вот она:
По умолчанию OneSignal откроет или возобновит вашу активность в средстве запуска, когдауведомление прослушивается.Вы можете отключить это поведение, добавив тег метаданных com.onesignal.NotificationOpened.DEFAULT , установленный на DISABLE , внутри тега приложения в вашем AndroidManifest.xml .
Убедитесь, что вы зарегистрировали его в манифесте Android, например:
<application ...>
<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" />
</application>
Создайте обработчик для открытых уведомлений, например:
public class MyNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
private final Context context;
public MyNotificationOpenedHandler(Context context) {
this.context = context;
}
@Override
public void notificationOpened(OSNotificationOpenResult result) {
if (result.action.type == OSNotificationAction.ActionType.Opened) {
JSONObject data = result.notification.payload.additionalData;
if (data == null) {
return;
}
String category = data.optString("category", null);
if (category == null) {
return;
}
if (category.equals("global")) {
Intent intent = new Intent(context, NotificationDetailsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
}
Следующий пункт:
Убедитесь, что вы инициализируете OneSignal с setNotificationOpenedHandler в методе onCreate в своем классе Application ,Вам нужно будет позвонить startActivity из этого обратного вызова.
Вам нужно будет расширить Класс приложения , например:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.setNotificationOpenedHandler(new MyNotificationOpenedHandler(getApplicationContext()))
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
}
}
Установите имя приложения в манифесте Android, например:
<application
android:name=".MyApplication"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
И вы готовы обрабатывать уведомления, когда приложение закрыто.