画像とビデオの追加(iOS) image-push
このドキュメントでは、Adobe Campaign Standard iOSのプッシュ通知から画像を表示する方法を説明します。
手順 1:プッシュ通知の設定 set-up-push
プッシュ通知は、Experience Platform SDK でサポートされています。
プッシュ通知を受け取るモバイルアプリケーションは、Adobe Campaign インターフェイスで管理者が設定する必要があります。
Adobe CampaignとAdobe Mobile Services の両方を設定すると、モバイルアプリケーションのデータをキャンペーンに使用できます。 詳しくは、このページを参照してください。
Experience CloudSDK アプリケーションでプッシュ通知を送信するには、データ収集 UI でモバイルアプリを設定し、Adobe Campaignで設定する必要があります。 詳しくは、このページを参照してください。
手順 2:Adobe Campaignでのプッシュ通知のカスタマイズ customize-push
Adobe Campaign では、プッシュ通知のデザイン中に一連の詳細設定オプションにアクセスして、プッシュ通知を微調整することができます。
-
プッシュ通知を作成します。 詳しくは、このページを参照してください。
-
プッシュ通知のコンテンツページから、「Advanced options」セクションにアクセスします。
-
ファイルの URL を「Rich media content URL」フィールドに入力します。
iOS 10 以降では、画像、gif、オーディオおよびビデオファイルを挿入できます。 -
プッシュ通知をプレビューして保存します。
手順 3:モバイルアプリケーションコードの適応 mobile-app-code
Adobe Campaignでプッシュ通知をカスタマイズした後、デバイスに画像を表示するようにモバイルアプリケーションを設定する必要があります。
アプリが Swift の場合は、次の手順に従います。
-
Xcode プロジェクトを開きます。
-
Xcode プロジェクトで、File/New/Target を選択します。
-
「Notification Service Extension」を選択します。
-
NotificationService.swift ファイルクラスが作成されていることを確認します。
-
このクラスを編集し、デフォルトコンテンツを次のコンテンツに置き換えます。
これにより、アプリケーションは、受信パラメーターとイメージ URL を処理し、解析して、ローカルにコピーしてから、プッシュ通知から表示することができます。code language-none import UserNotifications 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 { var urlString:String? = nil if let urlImageString = request.content.userInfo["media-attachment-url"] as? String { urlString = urlImageString } if urlString != nil, let fileUrl = URL(string: urlString!) { print("fileUrl: \(fileUrl)") // Download the attachment URLSession.shared.downloadTask(with: fileUrl) { (location, response, error) in if let location = location { // Move temporary file to remove .tmp extension if (error == nil) { let tmpDirectory = NSTemporaryDirectory() let tmpFile = "file://".appending(tmpDirectory).appending(fileUrl.lastPathComponent) let tmpUrl = URL(string: tmpFile)! try! FileManager.default.moveItem(at: location, to: tmpUrl) // Add the attachment to the notification content if let attachment = try? UNNotificationAttachment(identifier: fileUrl.lastPathComponent, url: tmpUrl) { bestAttemptContent.attachments = [attachment] } } if(error != nil) { print("Failed to download attachment: \(error.debugDescription)") } } // Serve the notification content contentHandler(bestAttemptContent) }.resume() } } } 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) } } }
通知が送信されると、モバイルは次のペイロードを受け取ります。
画像 URL は、キー media-attachment-url でマッピングされます。 画像をダウンロードして表示するには、アプリケーションコードの観点から処理する必要があるキーと値のペアです。
userInfo: [AnyHashable("media-attachment-url"): https://pbs.twimg.com/profile_images/876737835314950144/zPTs9b7o.jpg, AnyHashable("_dId"): 1de3ef93, AnyHashable("_mId"): h280a5, AnyHashable("aps"): {
alert = {
body = "Message Body here";
title = "This a push from Campaign";
};
badge = 1;
"mutable-content" = 1;
}]
手順 4:プッシュの送信をテスト test-send-push
これで、上記の手順 2 で作成したアプリケーションと配信の作成をテストできます。 プッシュ通知の準備と送信について詳しくは、この ページを参照してください