私はウェブ開発者であり、基本的にはユーザーを特定のページにリダイレクトするためのプッシュリクエストによって指示を受け取ることができるWebviewであるアプリケーションを開発しようとしています。すでに機能していますが、問題を修正するだけです:Backgound Firebaseプッシュ通知のデータ処理
Webviewの内容を更新するプッシュ情報を受け取って処理するクラスで関数を作成しようとしました。しかし、いくつかの矛盾があり、それは不可能です。なぜなら、1つのクラスは静的であり、もう1つは継承のためではないからです。
通知のクリック時に、プッシュリクエスト内の特定のフィールドで送信された値を受け取る「EMPTY」値で開始される「ウォッチメッセージクラス」内に文字列変数を作成していました。私のMainActivityで
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d("LOG_ONRECEIVE_1", "From: " + remoteMessage.getFrom());
if (remoteMessage.getData().size() > 0) {
Log.d("LOG_VALID_DATA", "Message data payload: " + remoteMessage.getData());
}
if (remoteMessage.getNotification() != null) {
Log.d("LOG_NULL_NOTIFICATION", "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
Map<String, String> data = remoteMessage.getData();
sendNotification(remoteMessage);
if (data.containsKey("appReportedAction")) {
Log.d("SET_ACTION", "/appReportedAction/" + data.get("appReportedAction"));
NEW_URL_FROM_ACTION = MainActivity.SSLPROTOCOL + "://" + MainActivity.MAIN_URL +"/appReportedAction/" + data.get("appReportedAction");
}
}
WebViewの内容を変更する機能があります:FirebaseMessagingServiceを拡張し、私のパブリッククラスFireBaseWatchMessagesがあります。それは次のように機能します。
public void changeViewContent(String actionView){
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
if(FireBaseWatchMessages.NEW_URL_FROM_ACTION != "EMPTY"){
mWebView.loadUrl(FireBaseWatchMessages.NEW_URL_FROM_ACTION);
} else {
mWebView.loadUrl(SSLPROTOCOL + "://" + MAIN_URL + actionView);
}
mWebView.setWebViewClient(new HelloWebViewClient());
}
アプリケーションが開いたときにWebViewのは、その値ではなく、デフォルトのURLに応じて変更されたURLを開く場合、この変数は、「EMPTY」以外の値を持っているのであれば、それはチェックします。
プッシュによって送信されたメッセージをクリックしてアプリケーションを閉じると、URLが適切な変更で開かれず、変数が実際にプッシュによって送信された値を受信していないように見えます。
アプリデバッガを使用すると、開いていないときにログコマンドがコンソールに表示されないことがわかりました。これは、アプリケーションが閉じられたときにその関数が実際には実行されないと考えています。
どのように私はこの動作を修正できますか?通知をクリックするアクションを実行して、パラメータをWebviewに送信するにはどうすればよいですか?
通知のクリックを処理しましたか?インテントの使用? – Xenolion
質問を明確にしてください!より多くのコードを表示しますか? – Xenolion