使用OneSignal通知,我正在发送一个包含URL的通知。在我的ADDITIONAL DATA
部分中,我要发送KEY: openURL
和VALUE: 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
活动。什么都不做。我究竟做错了什么?我一直在寻找解决方案,但无法获得任何有效的解决方案。非常感谢您的建议。
答案 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/(在页面中搜索:“更改通知的打开操作”。)