在 OneSignal 中点击通知打开应用程序

Pal*_*eja 2 android push-notification onesignal

我通过使用此方法收到通知OneSignal,但我想在单击通知时打开该应用程序

private static class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
    @Override
    public void notificationOpened(String message, JSONObject additionalData, boolean isActive) {

        try {
            if (additionalData != null) {
                if (additionalData.has("actionSelected"))
                    Log.d("OneSignalExample", "OneSignal notification button with id " + additionalData.getString("actionSelected") + " pressed");
                Log.d("OneSignalExample", "Full additionalData:\n" + additionalData.toString());
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

ran*_*dom 5

添加一个ExampleNotificationOpenedHandler将上下文作为参数的构造函数

private Context mContext;

public ExampleNotificationOpenedHandler(Context context) {
    mContext = context;
}
Run Code Online (Sandbox Code Playgroud)

INITOneSignalExampleNotificationOpenedHandler构造带内应用程序类上下文

public void onCreate() {
    super.onCreate();
    OneSignal.startInit(this)
             .setNotificationOpenedHandler((OneSignal.NotificationOpenedHandler)
                        new ExampleNotificationOpenedHandler(this))
             .init();
}
Run Code Online (Sandbox Code Playgroud)

准备意图并使用上下文开始您的活动

@Override
public void notificationOpened(OSNotificationOpenResult result) {
    try {
        if (additionalData != null) {
            Intent intent = new Intent(mContext, DetailsActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("key", <additionalData to be sent>);
            mContext.startActivity(intent);
    }
} catch (Throwable t) {
    t.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)