2017-09-20 2 views
0

予想される動作: 通知をクリックした後でイベントをトリガーします。 実際の行動:Phonegap-Pushplugin:iOSの通知時にクリックイベントを処理する

pushObject.on('notification').subscribe((notification: any) => { 

はすぐにアプリがフォアグラウンドにあるときに通知が届くよう トリガなっています。 クライアント側のコードは以下の通りである:

const options: PushOptions = { 
ios: { 
alert: 'true', 
badge: true, 
sound: 'false' 
}, 

}; 

const pushObject: PushObject = this.push.init(options); 

pushObject.on('notification').subscribe((notification: any) => console.log('Received a notification', notification)); 

pushObject.on('registration').subscribe((registration: any) => console.log('Device registered', registration)); 

pushObject.on('error').subscribe(error => console.error('Error with Push plugin', error)); 

サーバ側ペイロード例:問題の

{ 
    "aps": { 
     "alert": "Testing.. (15)", 
     "badge": 1, 
     "sound": "default", 
     "content-available": 1 
    } 
} 

を説明:アプリとすぐに通知が

pushObject.on('notification').subscribe((notification: any) => { 
を受信するようにフォアグラウンドにある場合

メソッドが呼び出されています。ユーザーが通知をクリックするのを待っているわけではありません。私のアプリでは、通知のペイロードデータに応じて特定のページに移動します。

この機能の即時トリガーのため、ユーザーが一部のページの真ん中にいるにも関わらず、通知を受け取った後すぐに一部のページにリダイレクトされます。

私は、ユーザーが通知をクリックするだけでその

pushObject.on('notification').subscribe((notification: any) => { 

後方法がトリガされなければならない欲しいです。前もって感謝します。

+0

プラグイン自体の動作が予期されているようですhttps://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#overview –

+0

ただし、ユーザーが一部のページを開いた場合アプリ内で通知が受信されると、彼はすぐに他のページにリダイレクトされます。だから私は機能の即時トリガを制御する必要があります。そうする方法はありますか? – Vasanth

答えて

0

通知ペイロードの.additionalData.foregroundプロパティを確認し、値がfalseの場合にのみアプリ内の動作をトリガすることができます。ユーザーが通知をクリックすると、アプリはフォアグラウンドに移動します。このプロパティは、通知がデバイスで受信されたときにアプリケーションがフォアグラウンドにあったかどうかを示します。

通知がデバイスで受信されたときにアプリケーションがフォアグラウンドにある場合(ほとんどの場合、通知の表示を強制する方法があります)あなたのアプリがフォアグラウンドにあるとき、それは別の話題です)。

アプリが通知を受け取ったときにこのプロパティがfalseの場合、通知がデバイスで受信されたときにアプリがバックグラウンドにあったことを意味します。これは、ユーザーがアプリを起動または起動するための通知をクリックしたときのケースです。これは「通常の」ケースです。

上記はすべてのケースをカバーするものではありません。正確な動作の詳細については、こちらをご覧ください。https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#push-message-arrives-with-app-in-foreground

残念ながら、IOS 11でうまく処理されないケースが1つあります。アプリケーションがフォアグラウンドにあり、デバイスがスリープ状態になっている/オフになっている通知が受信されます。デバイスをスリープ状態にすると、アプリはまだフォアグラウンドにあります。ユーザは通知リストをプルダウンし、「古い」通知をクリックする。この場合、additionalData.foregroundプロパティはtrueになります。

IOS 10以前では、この前景プロパティはその最後のケースではfalseに設定されていました。つまり、クリックされたかどうかを区別するために頼ることができました。

ケースを区別する方法(ユーザーが実際に通知をクリックしたかどうかを知る方法)はわかりません。

+0

私はハックを使用して巻き上げました。通知の配信時間を確認してください。--foregroundがtrueですが、now() - delivery timeがある合理的な量(1minute)より大きい場合、ユーザーが通知をクリックしたと推定できます。完璧ではありませんが、一般的なケースを処理しました。モバイルプッシュ通知APIが単純なnotificationClickedイベントをなぜ与えないのか、私は本当に分かりません! –

関連する問題