LoginSignup
12
14

More than 5 years have passed since last update.

Push通知を受け取ったタイミングで処理を行いたい

Last updated at Posted at 2015-09-18

結論

先に結論を書きますが。。
無理っぽいです。

問題点

Monacaにて、
プッシュ通知の内容を取得してどうこうという実装しておりました。

Monaca_プッシュ通知取得
ons.ready(function () {
    monaca.cloud.Push.setHandler(function(data){
        alert(data.hogehoge); //オブジェクト形式でデータを取得する事が出来ます。
    });
});

Monacaからjson形式でデータを渡す事が出来るため、data.[~~]と記述する事でプッシュ通知に付随するjsonデータを受け取る事が可能です。

ただ、ここには問題点があって、
こちらがPush通知が送り、受け取ったユーザーが通知をタップしてアプリが起動された場合のみ、イベントが起動する。
つまり、ユーザーが受け取ったPush通知をスライド等をして削除して、アイコンをタップしてアプリを起動した場合にはプッシュ通知の内容が取れないという点です。

ユーザーが通知を100%タップしてくれるとは限らないですし。。
どうしましょう、と途方にくれていました。

結論(2回目)

出来そうにないです。
少なくとも私の技術力では分かりませんでした。

APIでデータ取ってくるように修正する方針にしました。

ちなみにネイティブでは?

Android(後述の参考サイト: No.2)

Androidにて、端末にプッシュ通知が来たタイミングで処理を行うには、
NotificationListenerService を使用する事で実現が可能なようです。

ただし、このクラスは、Android端末に来た全てのプッシュ通知の内容を取得する事が出来るため、ユーザーにより明示的に設定しなければ、使えないようでした。
要は、プログラム側からは有効・無効の制御が不可なようで、不特定多数に配布するアプリでは、現実的に難しそうです。

iOS(後述の参考サイト: No.3)

・フォアグラウンドでのみ検出できれば良い場合は、application:didReceiveRemoteNotificationを実装しましょう。

バックグラウンドでは・・・ちょっと後日追記します。
読み込めてない部分がありました。

参考にしたサイト

1.Stackoverflow様 【monacaを利用したiosへのプッシュ通知】
・・・ こちらは、タップ時のイベント処理に関しての投稿でした。

2.Qiita: Androidでプッシュ通知が来たタイミングでhogehogeする

3.ブログ: Remote Notificationの実装 – Push通知の検出

・・・どなたか、実現方法、ご存知でしたら、教えてください。

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14