一応公式の説明はこちらですが、
https://firebase.google.com/docs/cloud-messaging/ios/send-image?hl=ja
イマイチ分かりにくいです。
以下の通り設定し、普通のプッシュ通知は受信できる前提です。
https://firebase.google.com/docs/cloud-messaging/ios/client?hl=ja
Notification Service ExtensionのTargetを追加する
Xcode -> File -> New -> Target... -> Notification Service Extension
Product Nameは適宜決めてください。
今回はLanguageはSwiftに設定します。
Finishで作成。
NotificationService.swiftの編集
上記の操作で作成されたNotificationService.swiftを編集します。
Firebaseをインポートして、
サンプルで入っていたコードを消して、
didReceiveのcontentHandlerをFirebaseへ引き渡してください。
以下のようになればOKです。
import UserNotifications
import Firebase
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)
if let bestAttemptContent = bestAttemptContent {
Messaging.serviceExtension().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)
}
}
}
CocoaPodsの設定
以下を追記
...
target *ProductName* do
pod 'Firebase'
pod 'Firebase/Messaging'
end
...
編集完了後pod install
してください。
Provisioningの設定
Apple Developer -> Certificates, Identifiers & Profiles -> Identifiers -> + -> App IDs
Bundle IDは元のアプリのBundle IDに先程のProductNameをドットでつなげたもの
Push Notificationsにチェック
Xcodeで作成したプロビジョニングをインポートしてください。
テスト
Firebaseの管理画面でこちらに画像のURLを入力してください。