iOS10 で画像つきプッシュ通知を配信する方法
アプリ側の実装
1. Capabilities にて、Push Notifications を ON にします
App Extensions の設定
1. プロジェクトを開き、Targets を追加します(メニューから File => New => Target を選択する もしくは、xcodeprojから + ボタンを押す)
2. Notification Service Extension を選択します
product name は、任意の名前をつけます
scheme を Activate するかのダイアログがでるので、 Activate を選択します
scheme につけた名前のフォルダと、その中に NotificationService.h/.m と Info.plist が追加されます
3. App Extensions の証明書確認
アプリの証明書と App Extension の証明書が一致しているか確認してください
4. NotificationService.m の実装
didReceiveNotificationRequest に下記を記述してください
YOUR_CUSTOM_KEY は、配信時、カスタムフィールドで定義する任意のキーとなるため、変更が可能です
NSString* imageUrl = [request.content.userInfo objectForKey:@"YOUR_CUSTOM_KEY"]; if(imageUrl) { NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSURLSessionTask *task = [session dataTaskWithURL:[NSURL URLWithString:imageUrl] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSURL *writePath = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:@"tmp.png"]; [data writeToURL:writePath atomically:YES]; UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"GrowthbeatSample" URL:writePath options:nil error:nil]; UNMutableNotificationContent *content = [request.content mutableCopy]; content.attachments = @[attachment]; self.contentHandler(content); }]; [task resume]; } else { self.contentHandler(self.bestAttemptContent); }
管理画面にて配信の設定
カスタムフィールドに下記 json を記述して配信設定を行ってください
{"aps":{"mutable-content":1},"YOUR_CUSTOM_KEY":"imageURL"}
配信対象はセグメントにて、 iOSのみ にすることを推奨します(OS別セグメント設定方法は「【おすすめセグメント】開封率が5%アップ!OS別セグメント」を参照)
注意点
・指定する画像は iOS の ATS 仕様に沿っている必要があります
・"mutable-content":1 が必須です
・YOUR_CUSTOM_KEY はアプリの実装のキーと一致している必要があります
指定画像サイズ
iOS側で自動トレースされるため、画像にマージンを設ける必要があります
・70 × 70px 画像の場合
表示アイコンサイズ 36 × 36px 左右上下マージン 18px
・140 × 140px 画像の場合
表示アイコンサイズ 72 × 72px 左右上下マージン 34px
配信イメージ