Открытие другой активности в OneSignal Push Notification

Furkan Yurdakul спросил: 12 мая 2018 в 04:48 в: android

Я изучаю, как обращаться с OneSignal Push Notifications на устройствах 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" запускается. Но когда он закрыт, так как я не могу отлаживать программу, и уведомление открывает всплеск активности, я знал, что время для меня было задавать этот вопрос, потому что ни один из ответов, которые я нашел, не работал. Есть ли способ открыть другое действие с конкретными данными из уведомления, когда приложение было закрыто? Любая помощь приветствуется, большое вам спасибо.

1 ответ

Furkan Yurdakul ответил: 13 мая 2018 в 09:01

Найдено, где была ошибка.

<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT"
            android:value="DISABLED"/>

Значение должно было быть "DISABLE", а не "DISABLED".