Я использую push-уведомления OneSignal для создания простого веб-приложения.
В каждом уведомлении есть URL-адрес.Если щелкнуть уведомление во время работы приложения, веб-просмотр правильно загружает содержащийся URL.Это может быть сделано несколько раз, поэтому, если есть три push-уведомления, их можно загружать одно за другим, щелкая их из панели уведомлений.
Однако, когда приложение не запущено и уведомление нажата,приложение открывается и загружает URL-адрес уведомления, как и ожидалось, но по какой-то причине не может загрузить последующие push-уведомления.
Таким образом, проблема возникает, когда приложение запускается с помощью щелчка уведомления, а не при обычном запуске.
Вот код:
ApplicationClass:
public class ApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// OneSignal Initialization
OneSignal.startInit(this)
.setNotificationOpenedHandler(new OneSignal.NotificationOpenedHandler() {
@Override
public void notificationOpened(OSNotificationOpenResult result) {
String launchURL=result.notification.payload.launchURL;
if (launchURL != null) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("url", launchURL);
intent.putExtra("check", 1);
startActivity(intent);
}
else
{
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
})
.init();
}
}
Активность:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
splash = findViewById(R.id.imageView);
browser = (WebView) findViewById(R.id.webview);
if (savedInstanceState == null) {
browser.loadUrl(homepage);
}
browser.setWebViewClient(new WebViewClient() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return false;
}
});
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
//notification
Intent notificationIntent = getIntent();
Bundle notificationBundle = notificationIntent.getExtras();
if(notificationBundle!=null)
{
notificationURL =(String) notificationBundle.get("url");
browser.loadUrl(notificationURL);
}
else
{
browser.loadUrl(homepage);
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
splash.setVisibility(View.GONE);
}
}, 6 * 1000);
}