UNNotificationServiceExtension
n/a.結論
**ターゲットとしてUNNotificationServiceExtensionを追加し、**didReceive(:withContentHandler:)内でプッシュアプリケーションをカスタマイズできます.
UNNotificationServiceExtension
このオブジェクトは、ユーザーに送信する前にコンテンツを変更するのに役立ちます. は、オブジェクト自体のUIを表示または表示しない.ただし、特定のタイプの通知をユーザー・デバイスに送信すると、対応する操作が行われます. は、暗号化されたデータがある場合、データを復号したり、通知に関連する画像をダウンロードしたりするのに役立ちます. このオブジェクトを作成または使用する必要はありません.Xcodeテンプレートにターゲットを追加するように実施します. をカスタマイズする場合は、
このメソッドを使用する条件) アプリケーションは、リモート通知を受信するように構成されている必要があります. は、メソッドを呼び出すために
このメソッドを使用すると、通知を変更できますが、タスクを実行する時間は限られています.
限られた時間内に完了できない場合、システムは
上記の方法は、変更したいコンテンツを最後に処理する機会です.
限られた時間内に未処理のコンテンツを処理したくない場合は、コンテンツを表示するだけです.(カスタマイズされていないコンテンツのみが表示されることを示します)
XcodeにNotificationServiceExtensionを追加する https://developer.apple.com/documentation/usernotifications/modifying_content_in_newly_delivered_notifications https://rhammer.tistory.com/270 NotificationServiceExtension Targetを追加し、FCMを使用する場合は、
カスタム名からなる
(以下のコードはFirebase FCMに基づく)
**ターゲットとしてUNNotificationServiceExtensionを追加し、**didReceive(:withContentHandler:)内でプッシュアプリケーションをカスタマイズできます.
UNNotificationServiceExtension
An object that modifies the content of a remote notification before it’s delivered to the user.
→ユーザーに送信する前に、リモート通知の内容を変更するオブジェクトを支援します.
didReceive(_:witContentHandler)
メソッドで実装できます.didReceive(_:withContentHandler:)
このメソッドを使用する条件)
mutable-content
の値を1に設定するように要求することを通知する.このメソッドを使用すると、通知を変更できますが、タスクを実行する時間は限られています.
限られた時間内に完了できない場合、システムは
serviceExtensionTimeWillExpire()
メソッドを呼び出す.上記の方法は、変更したいコンテンツを最後に処理する機会です.
限られた時間内に未処理のコンテンツを処理したくない場合は、コンテンツを表示するだけです.(カスタマイズされていないコンテンツのみが表示されることを示します)
インプリメンテーション
XcodeにNotificationServiceExtensionを追加する
Frameworks and Libraries
にFirebase Messageが追加されていることを確認します.カスタム名からなる
UNNotificationServiceExtension
のオブジェクトにコードを記述します.(以下のコードはFirebase FCMに基づく)
import UserNotifications
import FirebaseMessaging
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent
guard let bestAttemptContent = bestAttemptContent else { return }
/* title과 body 커스텀 */
bestAttemptContent.title = "[Modified]" + bestAttemptContent.title
bestAttemptContent.body = "[Modified]" + bestAttemptContent.body
FIRMessagingExtensionHelper().populateNotificationContent(
bestAttemptContent,
withContentHandler: contentHandler)
}
override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}
Reference
この問題について(UNNotificationServiceExtension), 我々は、より多くの情報をここで見つけました https://velog.io/@kipsong/UNNotificationServiceExtensionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol