2017-05-15 6 views
1

が、私は地元のプッシュ通知を処理するための2つの機能があることがわかり、バックグラウンドにあるときプッシュ通知は、アプリがフォアグラウンドにあるときに発生します。 2番目は、アプリがバックグラウンドにあり、ユーザーが通知をクリックするとプッシュ通知が発生したときに発生します。ローカルプッシュ通知を処理することは、アプリは、iOS 10では

私の質問は、アプリがバックグラウンドにあるときにローカルプッシュ通知を処理する方法はありますか?ユーザーはそれをクリックする必要はありませんか?理想的には、アプリがバックグラウンドまたはフォアグラウンドにある間に、CloudKitのアップデートを開始するために、プッシュ通知をすべて表示したいと考えています。これも可能ですか?

ありがとうございます!

+0

CloudKitを使用している場合、 'didReceiveRemoteNotification:completionHandler'アプリケーションデリゲートメソッドを使用できます – Paulw11

+0

私は実際にはリモート通知を使用していません。私は、*ローカル*通知で、データベースに対して 'add'操作を行う関数をトリガーする必要があります。 – mlecoz

+0

iOSで利用できるタイムスケジュールベースのバックグラウンド実行モードはありません。 – Paulw11

答えて

0

私が考えることができる唯一の方法は、あなたのアプリにNotifications Extensionを追加することです。 「通知サービス拡張」と「通知コンテンツ拡張子」の2種類があります。

どちらももともと何か他のものを対象としていますが、どちらもこの方法で動作する可能性があります。didReceive(_:withContentHandler:)のメソッドを実装できるため、アプリがバックグラウンドにある場合は、お知らせ。

私は「通知サービス拡張を」(それはもともとそれを表示する前に、通知の内容権を変更するためのものだが、あなただけの未修正のそれを残すことができる)を使用して、およびdidReceive(_:withContentHandler:)方法を実現するお勧めします。同じ元の通知でコンテンツハンドラを呼び出すだけでなく、CloudKitアップデートを起動するだけです。

ここでサービス拡張を追加する方法についての良いチュートリアルです:そのセクション「3.拡張コード」でhttps://code.tutsplus.com/tutorials/ios-10-notification-service-extensions--cms-27550

は、メソッドを実装する方法の例は、「// Edit properties of copy」というコメントで、あります、それはです私はCloudKitアップデートを起動するためのコードを追加する場所であるため、アプリがバックグラウンドにあるときに通知を表示する直前に実行されます。

+0

'Notification Service Extension'はローカル通知では機能しません。 'Notification Content Extension'はローカル通知で動作しますが、ユーザーが通知アクションをタップすると' didReceive(_:withContentHandler:) 'が呼び出されます。https://developer.apple.com/documentation/usernotificationsui/unnotificationcontentextension/1845197- didreceive。 – rafalkitta

関連する問題