次の理由から、.p12証明書ではなくAPNs認証キーを作成してアップロードすることをお勧めします。
i)プッシュ証明書を毎年再生成する必要がありません。
ii)1つの認証キーをすべてのアプリで使用できるため、複数の証明書を管理する手間を省けます。
.p12証明書を取得してアップロードするには
.p8ファイルを正常に設定済みの場合、この手順を省略して直接手順2に進むことができます。
また、Appleの従来の認証方式(.p12 SSL証明書)を使用することもできます。これらの証明書は毎年自動的に期限切れになるため、再生成して再度アップロードする必要があります。
-
[証明書]タブを選択し、[+]記号を使用して新規証明書を追加します。

-
[Appleプッシュ通知サービスSSL]を[サービス]で選択し、[続ける]をクリックします。
-
ドロップダウンからプロジェクトの[アプリID]を選択します。

-
Appleから証明書署名要求のアップロードを求められます。Macでキーチェーンアクセスを開き、[証明書アシスタント]に移動します。[認証局に証明書を要求]を選択します。

この選択肢を選択すると、証明書アシスタントが表示されます。[要求の処理]を[ディスクに保存]に設定し、メールアドレスは未入力のままにします。[続ける]をクリックします。
-
次に、アップロードを求められた証明書をApple Developerアカウントにアップロードします。
-
ダウンロードした生成済みの証明書を、キーチェーンアクセスアプリケーションで開きます。
-
キーチェーンアクセスで[自分の証明書]をクリックし、プッシュ証明書を探します。
-
対象の証明書を選択して右クリックし、エクスポート形式として.p12ファイルを選択し、一時的なパスワードを設定します。(証明書をPageSenseダッシュボードにアップロードする際に必要です)。
-
ダッシュボードで[設定の管理]→[設定]に移動し、証明書を[Appleプッシュ証明書]の欄にアップロードします。パスフレーズには一時的なパスワードを入力します。
情報:配布用プロビジョニングプロファイルを使用するアプリでは、開発用または本番用のプッシュ証明書をダッシュボードにアップロードできます。ただし、同時に有効にできるプッシュ証明書は1つのみです。
アプリをApp Storeで公開した後、本番環境でプッシュ通知をテストする場合は、開発環境用に別のアプリグループまたはアプリを設定することをお勧めします。
手順2:プッシュ通知機能の有効化

Xcodeのプロジェクトの設定で、[ターゲット]を選択した状態で、[署名と機能]タブをクリックし、[+機能]ボタンをクリックして追加します。[フィルター]項目に「push」と入力し、[プッシュ通知]を選択します。これにより、プロジェクトでプッシュ通知機能が有効になります。
手順3:プッシュ通知の登録
1. まず、User NotificationsをApp Delegateにインポートします。プッシュ通知の連携コードは、App Delegateファイルに記述し、メインスレッドで実行する必要があります。PageSense SDKからプッシュ通知を送信するように設定するには、iOSへの連携までの手順を、
クイックスタートガイドに沿ってすべて完了しておく必要があります。 アプリでプッシュ通知を設定するには、 UNUserNotificationCenterDelegateをAppDelegateに実装します。
2. デバイスをAPNsに登録するには、次のコードをApp Delegateのapplication:didFinishLaunchingWithOptions:
デリゲートメソッドに追加します。
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
- // Override point for customization after application launch.
- PageSense.integrate()
- UNUserNotificationCenter.current().delegate = self
- registerForPushNotifications()
- return true
- }
- func registerForPushNotifications() {
- UNUserNotificationCenter.current().requestAuthorization(options: [
- .badge, .sound, .alert
- ]) { granted, _ in
- guard granted else { return }
- DispatchQueue.main.async {
- UIApplication.shared.registerForRemoteNotifications()
- }
- }
- }
- func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
- PageSense.setPushToken(deviceToken: deviceToken)
- }
これは、iOSアプリにプッシュ通知を送信するために必須の手順です。アプリがこの承認を初めて要求すると、要求を許可するか拒否するかを確認するメッセージがユーザーに表示され、その回答が記録されます。
プッシュインプレッション
ユーザーのiOSデバイスに到達済みのプッシュ通知について、インプレッションを送信して記録できるようになります。iOSでプッシュインプレッションを送信するには、通知サービス拡張機能を有効にする必要があります。
通知サービス拡張機能は、アプリバンドルに埋め込まれる独立したバイナリです。新しいプッシュ通知を表示する前に、システムが通知サービス拡張機能を呼び出し、アプリの通知表示済みメソッドを呼び出せるようにします。通知サービスファイルのdidReceive関数に、次のコードを記述します。
- override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
- self.contentHandler = contentHandler
- bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
- if let bestAttemptContent = bestAttemptContent {
- // Modify the notification content here...
- bestAttemptContent.title = '\(bestAttemptContent.title) [modified]'
-
- contentHandler(bestAttemptContent)
-
- PageSense.trackPushNotificationReceived(notificationContent: request.content)
- }
- }