Skip to main content

概要

iOSプッシュ通知は、iOSアプリでの持続的なユーザーエンゲージメントとリテンションを促進するために不可欠です。これにより、リアルタイムの更新、リマインダー、パーソナライズされたメッセージをユーザーに直接配信でき、アプリの全体的なユーザーエクスペリエンスと定着性が向上します。OneSignalのSDKをアプリと統合することで、Apple Push Notification Service(APNS)を活用して、iOSデバイス全体で通知がシームレスに配信されるようにすることができます。このガイドでは、SDKをiOSアプリに統合する手順を説明します。

要件

  • Xcode 14以降を搭載したmacOS(セットアップ手順ではXcode 16.2を使用)
  • iOS 12以降、iPadOS 12以降、またはiOS 16.2以降を実行するXcodeシミュレーターを搭載したデバイス
  • 設定されたOneSignalアプリとプラットフォーム

OneSignalアプリとプラットフォームを設定

サポートするプラットフォーム(Apple(APNs)、Google(FCM)、Huawei(HMS)、Amazon(ADM))でOneSignalアプリを設定します。
組織がすでにOneSignalアカウントを持っている場合は、組織への招待をリクエストしてください。それ以外の場合は、無料アカウントにサインアップして開始してください。
1

アプリを作成または選択

New App/Website をクリックして新しいアプリを作成するか、Settings > Push & In-App で既存のアプリにプラットフォームを追加します。設定するプラットフォームを選択し、Next: Configure Your Platform をクリックします。
組織名、アプリ名、チャネル選択を含む新しいアプリセットアップフローを表示するOneSignalダッシュボード

最初のOneSignalアプリ、組織、チャネルのセットアップ。

2

プラットフォーム認証情報を設定

プラットフォームの認証情報を入力します:認証情報を入力した後、Save & Continue をクリックします。
3

App IDを保存してSDKをインストール

App ID は最終画面に表示されます。コピーして保存してください — SDKを初期化するときに必要です。SDKプラットフォームを選択し、セットアップガイドに従います。
セットアップ後のApp IDとチーム招待オプションを表示するOneSignalダッシュボード

App IDを保存して追加のチームメンバーを招待します。


iOSのセットアップ

次の手順に従って、バッジ確認済み配信、および画像のサポートを含むプッシュ通知をiOSアプリに追加します。

1. アプリターゲットにプッシュ通知機能を追加

プッシュ通知機能により、アプリはプッシュトークンを登録して通知を受信できます。
  1. Xcodeでアプリの.xcworkspaceファイルを開きます。
  2. アプリターゲット > 署名 & 機能を選択します
  3. + 機能をクリックして、プッシュ通知機能を追加します

アプリターゲットにプッシュ通知機能が付与されます。

2. アプリターゲットにバックグラウンドモード機能を追加

これにより、プッシュ通知が到着したときにアプリがバックグラウンドでウェイクできます。
  1. バックグラウンドモード機能を追加します
  2. リモート通知を有効にします

アプリターゲットにリモート通知バックグラウンド実行モードが付与されます。

3. アプリターゲットをアプリグループに追加

アプリグループを使用すると、アプリとNotification Service Extension間でデータを共有できます。確認済み配信とバッジに必要です。
  1. アプリグループ機能を追加します
  2. アプリグループ機能で**+**をクリックします
  3. 次の形式で新しいコンテナIDを追加します:group.your_bundle_id.onesignal
  • group..onesignalのプレフィックスとサフィックスを保持します。**your_bundle_id**をアプリのバンドル識別子に置き換えます。
  • たとえば、バンドル識別子がcom.onesignal.MyAppの場合、コンテナ名はgroup.com.onesignal.MyApp.onesignalになります。

アプリターゲットはアプリグループの一部です。

アプリグループ名は、すべてのターゲットでバンドルIDのスペルと大文字小文字が正確に一致する必要があります。

4. Notification Service Extensionを追加

Notification Service Extension(NSE)は、リッチ通知と確認済み配信分析を有効にします。
  1. Xcodeで:ファイル > 新規 > ターゲット…
  2. Notification Service Extensionを選択してから、次へをクリックします。
  3. 製品名をOneSignalNotificationServiceExtensionに設定し、完了を押します。
  4. スキームのアクティブ化プロンプトでアクティブ化しないを押します。

Notification Service Extensionターゲットを選択します。

Notification Service Extensionに名前を付けます。

アクティブ化をキャンセルして、アプリターゲットのデバッグを続行します。

OneSignalNotificationServiceExtensionの最小デプロイメントターゲットをメインアプリに一致するように設定します(iOS 15以降を推奨)。
CocoaPodsを使用している場合は、Podfileにもデプロイメントバージョンを設定してください。

メインアプリと同じデプロイメントターゲットを設定します。

5. NSEターゲットをアプリグループに追加

ステップ3で追加したのと同じアプリグループIDを使用します。
  1. OneSignalNotificationServiceExtension > 署名 & 機能に移動します
  2. アプリグループを追加します
  3. まったく同じグループIDを追加します
カスタムアプリグループ名を使用していて、group.your_bundle_id.onesignalではない場合は、アプリターゲットとOneSignalNotificationServiceExtensionターゲットのInfo.plistの両方にアプリグループIDを追加してください!詳細については、ステップ3を参照してください。

NSEは、アプリターゲットと同じアプリグループに属するようになりました。

6. NSEコードを更新

  1. OneSignalNotificationServiceExtensionフォルダに移動します
  2. NotificationService.swiftまたはNotificationService.mファイルの内容を次のものに置き換えます:

NotificationServiceファイルに移動します。

OneSignalパッケージがインストールされていないため、エラーが表示されるはずです。これは次のステップで解決されます。

次のステップでパッケージをインストールするまで、このファイルはエラーを表示します。


SDKのセットアップ

このセクションでは、OneSignalのコア機能の統合について説明します。このセクションが終わるまでに、アプリ内メッセージをトリガーしてプッシュ通知を受信できる、SDKとの基本的な統合が完了します。

1. SDKを追加

Xcode Package Dependencies Manager (Swift Package Manager)またはCocoaPodsを使用してSDKを追加します。利用可能なライブラリは4つあります。アプリ内メッセージまたは位置情報追跡が不要な場合は、これらのパッケージを省略できます。
**ファイル > パッケージ依存関係を追加…**に移動し、OneSignal SDKリポジトリのURLを入力します:https://github.com/OneSignal/OneSignal-XCFrameworkonesignal-xcframeworkパッケージを選択し、パッケージを追加をクリックします。OneSignal-XCFrameworkのパッケージ製品を選択します。
  • 重要OneSignalExtensionをOneSignalNotificationServiceExtensionターゲットに追加します。
  • OneSignalFrameworkをアプリターゲットに追加します。
  • アプリ内メッセージ(推奨)または位置情報追跡を使用する予定がある場合は、それらのパッケージもアプリターゲットに追加します。

アプリで位置情報追跡が不要な場合は、この例のようにパッケージを削除できます。

詳細については、Appleのパッケージ依存関係の追加ドキュメントを参照してください。

2. SDKを初期化

Xcodeインターフェースのセットアップに応じて、次のオプションに従ってOneSignalを初期化します。
SwiftUIインターフェースを使用している場合は、<APP_NAME>App.swiftファイルに移動し、提供されたメソッドでOneSignalを初期化します。OneSignalダッシュボードの**設定 > キーとID**にあるOneSignalアプリIDでYOUR_APP_IDを置き換えます。OneSignalアプリにアクセスできない場合は、チームメンバーに招待を依頼してください。

メソッドスウィズリングの無効化(オプション)

デフォルトでは、OneSignal SDK はメソッドスウィズリングを使用してプッシュ通知デリゲートメソッドを自動的に処理します。アプリでスウィズリングを無効にする必要がある場合(例:他の SDK との競合を避けるため、または通知デリゲートメソッドを完全に制御するため)、Info.plist でオプトアウトできます。 スウィズリングが無効な場合、OneSignal SDK に通知デリゲートメソッドを手動で転送する必要があります。他のすべての SDK 機能(リスナー、オブザーバー、アプリ内メッセージ、アウトカムなど)は引き続き正常に動作します。

ステップ 1. Info.plist フラグを追加する

アプリの Info.plist に以下を追加します:
SDK がこのフラグを検出すると、起動時にすべてのメソッドスウィズリングをスキップし、手動転送を実装するよう促す警告を記録します。

ステップ 2. UNUserNotificationCenter デリゲートを設定する

OneSignal.initialize を呼び出す前にAppDelegateUNUserNotificationCenter デリゲートとして設定します。これがないと、フォアグラウンド通知の表示と通知タップ処理が機能しません。

ステップ 3. 通知デリゲートメソッドを転送する

AppDelegate に以下のメソッドを実装します。すべてのメソッドは OneSignal.Notifications を通じて呼び出されます。 トークン登録:
バックグラウンド / サイレント通知:
フォアグラウンド通知表示: SDK は OSNotification オブジェクトでコンプリーションブロックを呼び出します。nil でない場合、SDK は通知を表示することを求めています——希望の表示オプションを渡してください。nil の場合(例:IAM プレビュー)、表示オプションを渡さないでください。
onWillDisplayNotification ライフサイクルリスナーと preventDefault / display API は引き続き手動転送で動作します。SDK は handleWillPresentNotificationInForegroundWithPayload 内からリスナーを呼び出します。
通知タップ / アクション:

オプション:バッジカウントを設定する

スウィズリングが無効な場合、SDK はバッジの変更を傍受できません。このメソッドを使用してバッジカウントを設定し、OneSignal の内部バッジキャッシュと同期します:

SwiftUI アプリ

SwiftUI アプリにはデフォルトで AppDelegate がありません。@UIApplicationDelegateAdaptor を使用して追加し、上記のすべての転送メソッドを実装します:
Swift

API リファレンス


OneSignal SDK統合のテスト

このガイドでは、プッシュ通知、サブスクリプション登録、アプリ内メッセージをテストして、OneSignal SDK統合が正しく機能していることを確認する方法を説明します。

モバイルサブスクリプションを確認

1

テストデバイスでアプリを起動します。

初期化時にrequestPermissionメソッドを追加した場合、ネイティブのプッシュ許可プロンプトが自動的に表示されます。

iOSとAndroidのプッシュ許可プロンプト

2

OneSignalダッシュボードを確認

プロンプトを受け入れる前に、OneSignalダッシュボードを確認してください:
  • Audience > Subscriptionsに移動します。
  • ステータスが「Never Subscribed」の新しいエントリが表示されるはずです。

「Never Subscribed」ステータスのサブスクリプションを表示するダッシュボード

3

アプリに戻り、プロンプトで「許可」をタップします。

4

OneSignalダッシュボードのSubscriptionsページを更新します。

サブスクリプションのステータスがSubscribedと表示されるはずです。

「Subscribed」ステータスのサブスクリプションを表示するダッシュボード

モバイルサブスクリプションの作成に成功しました。 モバイルサブスクリプションは、ユーザーがデバイスで初めてアプリを開いたとき、またはユーザーが同じデバイスでアプリをアンインストールして再インストールしたときに作成されます。

テストサブスクリプションをセットアップ

テストサブスクリプションは、メッセージを送信する前にプッシュ通知をテストするのに役立ちます。
1

Test Usersに追加します。

ダッシュボードで、サブスクリプションの横にある**Options(3つのドット)**ボタンをクリックし、Add to Test Usersを選択します。

デバイスをtest usersに追加

2

サブスクリプションに名前を付けます。

test usersタブで後でデバイスを簡単に識別できるように、サブスクリプションに名前を付けます。
3

テストユーザーセグメントを作成します。

Audience > Segments > New Segmentに移動します。
4

セグメントに名前を付けます。

セグメントにTest Usersという名前を付けます(この名前は後で使用されるため重要です)。
5

Test Usersフィルターを追加し、Create Segmentをクリックします。

Test Usersフィルターを使用して「Test Users」セグメントを作成

テストユーザーのセグメントの作成に成功しました。 この個別のデバイスとテストユーザーのグループにメッセージを送信するテストが可能になりました。

API経由でテストプッシュを送信

1

App API KeyとApp IDを取得します。

OneSignalダッシュボードで、**Settings > Keys & IDs**に移動します。
2

提供されたコードを更新します。

以下のコードのYOUR_APP_API_KEYYOUR_APP_IDを実際のキーに置き換えます。このコードは、先ほど作成したTest Usersセグメントを使用します。
3

コードを実行します。

ターミナルでコードを実行します。
4

画像とconfirmed receiptを確認します。

すべてのセットアップ手順が正常に完了した場合、テストサブスクリプションは画像を含む通知を受信するはずです:

iOSとAndroidで画像付きプッシュ通知

画像は折りたたまれた通知ビューでは小さく表示されます。通知を展開すると、完全な画像が表示されます。
5

confirmed receiptを確認します。

ダッシュボードで、Delivery > Sent Messagesに移動し、メッセージをクリックして統計を表示します。confirmed統計が表示されるはずです。これは、デバイスがプッシュを受信したことを意味します。
API経由でセグメントに通知を送信することに成功しました。
  • 画像が受信されない場合は、Notification Service Extensionが不足している可能性があります。
  • confirmed receiptがない場合は、こちらのトラブルシューティングガイドを確認してください。
  • 問題が発生した場合は、APIリクエストとアプリ起動の最初から最後までのログを.txtファイルにコピー&ペーストしてください。その後、両方をsupport@onesignal.comと共有してください。

アプリ内メッセージを送信

アプリ内メッセージを使用すると、ユーザーがアプリを使用している間にユーザーとコミュニケーションできます。
1

デバイスでアプリを閉じるか、バックグラウンドにします。

これは、ユーザーが新しいセッションを開始する_前_にアプリ内オーディエンスの基準を満たす必要があるためです。OneSignalでは、ユーザーがアプリをバックグラウンドまたは閉じた状態から少なくとも30秒後に開くと、新しいセッションが開始されます。詳細については、アプリ内メッセージの表示方法に関するガイドを参照してください。
2

アプリ内メッセージを作成します。

  • OneSignalダッシュボードで、Messages > In-App > New In-Appに移動します。
  • Welcomeメッセージを見つけて選択します。
  • Audienceを、以前使用したTest Usersセグメントに設定します。

「Test Users」セグメントをアプリ内メッセージでターゲティング

3

必要に応じてメッセージコンテンツをカスタマイズします。

アプリ内Welcomeメッセージのカスタマイズ例

4

トリガーを「On app open」に設定します。

5

頻度をスケジュールします。

**Schedule > How often do you want to show this message?**で、Every time trigger conditions are satisfiedを選択します。

アプリ内メッセージのスケジュールオプション

6

メッセージをライブにします。

Make Message Liveをクリックして、Test Usersがアプリを開くたびにメッセージが利用できるようにします。
7

アプリを開いてメッセージを確認します。

アプリ内メッセージがライブになったら、アプリを開きます。次のように表示されるはずです:

デバイスに表示されたWelcomeアプリ内メッセージ

メッセージが表示されない場合:
  • 新しいセッションを開始します
    • 再度開く前に、少なくとも30秒間アプリを閉じるかバックグラウンドにする必要があります。これにより、新しいセッションが開始されます。
    • 詳細については、アプリ内メッセージの表示方法を参照してください。
  • まだTest Usersセグメントに含まれていますか?
    • アプリを再インストールしたりデバイスを切り替えたりした場合は、デバイスをTest Usersに再度追加し、Test Usersセグメントの一部であることを確認してください。
  • 問題が発生していますか?
    • 上記の手順を再現しながらデバッグログの取得に従ってください。これにより、support@onesignal.comと共有できる追加のログが生成され、何が起こっているかを調査するのに役立ちます。
OneSignal SDKのセットアップが成功し、次のような重要な概念を学びました:このガイドを続けて、アプリでユーザーを識別し、追加機能をセットアップします。

ユーザー識別

以前、モバイルサブスクリプションの作成方法を説明しました。次に、OneSignal SDKを使用して、すべてのサブスクリプション(プッシュ、メール、SMSを含む)にわたるユーザーの識別に拡張します。プラットフォーム間でユーザーを統合し、エンゲージメントするために、External ID、タグ、マルチチャネルサブスクリプション、プライバシー、イベントトラッキングについて説明します。

External IDを割り当て

External IDを使用して、バックエンドのユーザー識別子を使用して、デバイス、メールアドレス、電話番号間でユーザーを一貫して識別します。これにより、チャネルとサードパーティシステム間でメッセージングが統一されたままになります(特に統合に重要)。 アプリによって識別されるたびに、SDKのloginメソッドを使用してExternal IDを設定します。
OneSignalは、サブスクリプション(Subscription ID)とユーザー(OneSignal ID)に対して一意の読み取り専用IDを生成します。ユーザーが異なるデバイスでアプリをダウンロードしたり、ウェブサイトにサブスクライブしたり、アプリ外でメールアドレスや電話番号を提供したりすると、新しいサブスクリプションが作成されます。すべてのサブスクリプションにわたってユーザーを識別するために、SDK経由でExternal IDを設定することを強くお勧めします。作成方法に関係なく。

データタグを追加

タグは、ユーザープロパティ(usernamerole、設定など)とイベント(purchase_dategame_level、ユーザーインタラクションなど)を保存するために使用できる文字列データのキーと値のペアです。タグは、高度なメッセージパーソナライゼーションセグメンテーションを強化し、より高度なユースケースを可能にします。 アプリでイベントが発生したときに、SDKのaddTagおよびaddTagsメソッドを使用してタグを設定します。 この例では、ユーザーはレベル6に到達し、current_levelというタグで識別され、値は6に設定されます。

"current_level"というタグが"6"に設定されたOneSignalのユーザープロファイル

レベルが5から10の間のユーザーのセグメントを作成し、それを使用してターゲット化されたパーソナライズされたメッセージを送信できます:

current_level値が4より大きく10より小さいユーザーをターゲットとするセグメントを示すセグメントエディター


パーソナライズされたメッセージでLevel 5-10セグメントをターゲットとするプッシュ通知を示すスクリーンショット


パーソナライズされたコンテンツを含むプッシュ通知がiOSおよびAndroidデバイスで受信されます

メールおよび/またはSMSサブスクリプションを追加

以前、SDKがプッシュとアプリ内メッセージを送信するためにモバイルサブスクリプションを作成する方法を見ました。対応するサブスクリプションを作成することで、メールとSMSチャネルを通じてユーザーにリーチすることもできます。 メールアドレスや電話番号がOneSignalアプリに既に存在する場合、SDKはそれを既存のユーザーに追加し、重複は作成しません。 ダッシュボードのAudience > UsersまたはView user APIを使用して、統合されたユーザーを表示できます。

External IDによって統合されたプッシュ、メール、SMSサブスクリプションを持つユーザープロファイル

マルチチャネルコミュニケーションのベストプラクティス
  • メールまたはSMSサブスクリプションを追加する前に、明示的な同意を得てください。
  • 各コミュニケーションチャネルの利点をユーザーに説明してください。
  • ユーザーが好むチャネルを選択できるように、チャネルの設定を提供してください。

プライバシーとユーザー同意

OneSignalがユーザーデータを収集するタイミングを制御するには、SDKの同意ゲーティングメソッドを使用します: 詳細については、プライバシーとセキュリティのドキュメントを参照してください:

プッシュ許可のプロンプト

アプリを開いたときにすぐにrequestPermission()を呼び出すのではなく、より戦略的なアプローチを取ります。許可をリクエストする前に、アプリ内メッセージを使用してプッシュ通知の価値を説明します。 ベストプラクティスと実装の詳細については、プッシュ許可のプロンプトガイドを参照してください。

プッシュ、ユーザー、アプリ内イベントをリッスン

SDKリスナーを使用して、ユーザーのアクションと状態の変化に反応します。 SDKは、フックできるいくつかのイベントリスナーを提供します。詳細については、SDKリファレンスガイドを参照してください。

プッシュ通知イベント

完全なカスタマイズについては、Mobile Service Extensionsを参照してください。

ユーザー状態の変更

アプリ内メッセージイベント

  • addClickListener():アプリ内クリックアクションを処理します。ディープリンクやイベントの追跡に最適です。
  • addLifecycleListener():アプリ内メッセージの完全なライフサイクル(表示、クリック、閉じるなど)を追跡します。

高度なセットアップと機能

統合を強化するための追加機能を探索します:

Mobile SDKのセットアップとリファレンス

モバイルプッシュセットアップガイドを確認して、すべての主要機能が有効になっていることを確認してください。 利用可能なメソッドと設定オプションの詳細については、Mobile SDKリファレンスにアクセスしてください。
おめでとうございます!Mobile SDKセットアップガイドが正常に完了しました。

サポートが必要ですか?サポートチームとチャットするか、support@onesignal.comにメールしてください以下を含めてください:
  • 発生している問題の詳細と再現手順(利用可能な場合)
  • OneSignal App ID
  • 該当する場合は、External IDまたはSubscription ID
  • 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  • 関連するログまたはエラーメッセージ
お気軽にお問い合わせください!