メインコンテンツへスキップ
iOSは、通知コンテンツアプリ拡張機能のエントリーポイントとしてUNNotificationContentExtensionプロトコルを提供しています。これを使用して、アプリの通知用のカスタムインターフェースを表示できます。このサンプルガイドでは、iOS通知内でカルーセルを作成するためにこれを使用する方法について説明します。

プッシュ通知のカルーセルを示す画像

1. 通知コンテンツ拡張機能を追加

00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM

Xcodeで、ファイル > 新規 > ターゲット…を選択します
efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM

「Notification Content Extension」を選択します
0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM

ポップアップ表示されるウィンドウで選択を確認します
ActivateContentExtension

デバッグするためにアクティブ化を選択します

2. アプリにコードを追加

GithubからOSNotificationContentExtensionをダウンロードし、XcodeプロジェクトのOSNotificationContentExtensionを同じファイルで置き換えます。 次のファイルが追加されます:

Content Extension配下のファイル

3. 通知カテゴリを設定

この例は、AppDelegate.swiftのdidFinishLaunchingWithOptions内でアクション可能な通知タイプを宣言します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    //START Authorize OS Notification Carousel Category
    if #available(iOS 10.0, *) {
        let options: UNAuthorizationOptions = [.alert]
        UNUserNotificationCenter.current().requestAuthorization(options: options) { (authorized, error) in
            if authorized {
                let categoryIdentifier = "OSNotificationCarousel"
                let carouselNext = UNNotificationAction(identifier: "OSNotificationCarousel.next", title: "👉", options: [])
                let carouselPrevious = UNNotificationAction(identifier: "OSNotificationCarousel.previous", title: "👈", options: [])
                let carouselCategory = UNNotificationCategory(identifier: categoryIdentifier, actions: [carouselNext, carouselPrevious], intentIdentifiers: [], options: [])
                UNUserNotificationCenter.current().setNotificationCategories([carouselCategory])
            }
        }
    }
    //END Authorize OS Notification Carousel Category

    return true
}

4. プッシュ通知を送信

プッシュメッセージの送信時に、iOSカテゴリとカスタムデータを設定できます。

iOSカテゴリ

iOSカテゴリとしてOSNotificationCarouselを使用します:
  • ダッシュボード
  • API
「プラットフォーム設定」 > Apple iOSに送信 > 「カテゴリ」で設定します

OneSignalダッシュボードのiOSプラットフォームオプション

カスタムデータ

OneSignalには、通知ごとに複数の画像をアップロードするオプションはありません。 代わりに、カンマ,で区切られた画像URLをリストする必要があります
  • ダッシュボード
  • API
「詳細設定」 > 「追加データ」で設定します「キー」にはimagesを設定し、「値」には引用符なしでカンマ区切りのURLのリストを設定します。
例、コピー&ペースト:
https://cdn.pixabay.com/photo/2015/12/01/20/28/road-1072823_960_720.jpg,https://cdn.pixabay.com/photo/2013/11/28/10/36/road-220058_960_720.jpg,https://cdn.pixabay.com/photo/2012/08/27/14/19/mountains-55067_960_720.png,https://cdn.pixabay.com/photo/2015/01/28/23/35/landscape-615429_960_720.jpg,https://cdn.pixabay.com/photo/2016/05/05/02/37/sunset-1373171_960_720.jpg

プッシュを送信

プッシュを受信したら、iOSバージョンに応じて、長押しするか左にスワイプして「表示」をクリックして通知を展開する必要があります。

参考資料