打开OneSignal URL到另一个活动的WebView

时间:2018-08-16 17:00:27

标签: android onesignal

使用OneSignal通知,我正在发送一个包含URL的通知。在我的ADDITIONAL DATA部分中,我要发送KEY: openURLVALUE: http://example.com

我正在尝试打开我的WebView活动的DailyDose内部的链接。

在这里,我的ProfileActivity活动,我正在尝试接收通知并将其发送到DailyDose活动。

public class ProfileActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);

        OneSignal.startInit(this)
            .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
            .setNotificationOpenedHandler(new NotificationOpenHandler())
            .unsubscribeWhenNotificationsAreDisabled(true)
            .init();
    }

    class NotificationOpenHandler implements OneSignal.NotificationOpenedHandler {
        @Override
        public void notificationOpened(OSNotificationOpenResult result) {
            OSNotificationAction.ActionType actionType = result.action.type;
            JSONObject data = result.notification.payload.additionalData;
            String openURL = getIntent().getStringExtra("openURL");
            Intent intent = new Intent(getApplicationContext(), DailyDose.class);
            intent.putExtra("openURL", openURL);
            startActivity(intent);
        }
    }
}

这是我的DailyDose活动,我试图在其中打开WebView中的链接:

public class DailyDose extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_daily_dose);

            String openURL = getIntent().getStringExtra("openURL");

            final TextView textView = findViewById(R.id.debug_view);
            textView.setText("URL from additionalData: " + openURL);

            WebView webView = findViewById(R.id.webview);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebViewClient(new WebViewClient());
            if (openURL == null)
                webView.loadUrl("https://google.com");
            else
                webView.loadUrl(openURL);

但是它不起作用。轻触通知,它只会打开应用程序的ProfileActivity活动。什么都不做。我究竟做错了什么?我一直在寻找解决方案,但无法获得任何有效的解决方案。非常感谢您的建议。

1 个答案:

答案 0 :(得分:2)

当您单击通知时,它会打开ProfileActivity,因为它是onesignal的默认行为。它将打开具有onesignal初始化的相同活动。因此,首先您需要禁用onesignal的默认行为。在AndroidManifest文件中的以下行中编写。

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

现在运行您的项目,并检查它会打开DailyDose活动。让我知道您是否仍然遇到任何问题。

有关此问题的更多说明,请阅读onesignal的官方文件:

https://getbootstrap.com/docs/4.0/components/dropdowns/(在页面中搜索:“更改通知的打开操作”。)