前提・実現したいこと
すでに稼働しているWebアプリを、Monacaでラッピングして、通知機能だけを追加する開発を行っております。
1.index.html に、既存WebアプリのURLを起動するコードと
2.FCMでの通知のためのトークンをサーバーに送信する機能と通知を受信したときのハンドラ
の2つを追加しただけなのですが、通知のハンドリングが思った通りに動作しません。
https://teratail.com/questions/126323
↑こちらの件と状況はかなり似ていますが、より詳細な方法が知りたくて投稿させて頂きました。
発生している問題・エラーメッセージ
InAppBrowserでトークンを送信したあとにその画面はWebアプリのトップページにくるようになっています。
これでサーバーにトークンが登録され、WebアプリはInAppBrowserの中で問題なく動作します。
ただ、通知をサーバーからトークン宛に送信すると通知は着信しますが、通知着信時に、
アプリが起動しなければ、ソースコードのように”Hello World"が表示されます。これが期待通りの動作です。
ただ、アプリが起動している場合は、アプリがアクティブになるだけで、onNotificationOpenが呼び出されていない様子です。
上記に記載しました過去記事によると、onNotificationOpenがページにないからということでしたが、この場合アプリ本体は生きていて、WebアプリはInAppBrowserの中で動いているので、onNotificationOpen は反応するのではと期待していましたがそうではありませんでした。
Webアプリのソースに手を入れられない以上、この実装は難しいのでしょうか。
少なくとも、サーバーから送信するタイトルとメッセージは通知ドロワーに表示されるので、onNotificationOpen 以外になにか通知をハンドルできる仕組みがあるのでしょうか。
みなさまのお知恵を拝借できれば幸いです。
該当のソースコード
JavaScript
1ons.ready(function() { 2 3 var inabppb; 4 5 window.FirebasePlugin.getToken(function(token) { 6 // Tokenを送信してサーバーに登録 7 inappb = cordova.InAppBrowser.open('https://server/send/token/' + token, '_blank'); 8 9 }, function(error) { 10 console.error(error); 11 }); 12 13 14 window.FirebasePlugin.onNotificationOpen(function(notification) { 15 // アプリが起動してない場合に限りここを通る 16 alert("Hello Worild"); 17 }, function(error) { 18 console.error(error); 19 }); 20 21 22});
試したこと
InAppBrowserの替わりにwindow.open やlocation.href などを利用しても同じでした。
補足情報(FW/ツールのバージョンなど)
cordova 7.1
あなたの回答
tips
プレビュー