저는 웹 개발자로서 사용자를 특정 페이지로 리디렉션하기위한 푸시 요청을 통해 지침을받을 수있는 기본적으로 웹보기 인 응용 프로그램을 개발하려고합니다. 이미 기능이 있지만 문제를 해결하기 만하면됩니다.Backgound Firebase 푸시 알림 데이터 처리
Webview의 내용을 업데이트하는 푸시 정보를 받아 처리하는 클래스에서 함수를 만들려고했습니다. 그러나 하나의 클래스는 정적이고 다른 하나는 상속으로 인한 것이 아니기 때문에 약간의 충돌이 있으며 그렇게 할 수 없습니다.
알림을 클릭 할 때 푸시 요청 '날짜'내의 특정 필드에서 보낸 값을받는 "비어있는 메시지 클래스"내에서 문자열 변수를 만드는 방법이 있습니다. 내 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");
}
}
웹뷰 내용을 변경하는 기능이있다 : 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());
}
그래서 응용 프로그램이 변수 "EMPTY"이외의 값이있는 경우 그래서 웹보기는 그 값이 아닌 기본 URL에 따라 수정 된 URL을 열 경우는, 확인 열 때.
푸시에 의해 전송 된 메시지를 클릭 할 때 응용 프로그램이 닫히면 해당 변수가 실제로 푸시에 의해 전송 된 값을받지 못하는 것처럼 해당 수정으로 열리지 않습니다.
응용 프로그램 디버거를 사용하면 열려 있지 않을 때 콘솔에 로그 명령이 표시되지 않는 것으로 나타났습니다. 응용 프로그램이 닫힐 때 해당 기능이 실제로 실행되지 않는다고 생각됩니다.
어떻게하면이 문제를 해결할 수 있습니까? 어떻게 알림을 클릭하면 매개 변수를 webview로 보내겠습니까?
알림을 처리 했습니까? 인 텐트 사용? – Xenolion
질문을 명확히하십시오! 더 많은 코드를 표시 하시겠습니까? – Xenolion