iOS10およびiOS9でプッシュ通知を受信できない 質問する

iOS10およびiOS9でプッシュ通知を受信できない 質問する

iOS10 のプッシュ通知を設定しようとしています。以前は 10 より前のバージョンでは機能していました。
いくつかのガイドを読んでみると、私の設定は次のようになります。

// Register for the defined notifications

        if #available(iOS 10.0, *) {

            let center = UNUserNotificationCenter.current()
            center.delegate = UIApplication.shared.delegate as! AppDelegate
            center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in

                if error == nil {
                    UIApplication.shared.registerForRemoteNotifications()
                }
            }

        } else {

            // Fallback on earlier versions

            let notificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: [autoCancelCategory])
            UIApplication.shared.registerUserNotificationSettings(notificationSettings)
            UIApplication.shared.registerForRemoteNotifications()

        }

これは、ビュー コントローラーの 1 つでログイン時に呼び出されます。

そして現在AppDelegate、 では に準拠しておりUNUserNotificationCenterDelegate、次のメソッドがあります。

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    print("Got a push!")
}


@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    print("Got a push!")
}

そして、私はまた、次のものも持っています:

 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    let settings = UserDefaults.standard
    settings.setValue(deviceToken, forKey: "deviceToken")
}

デバイス トークンは としてサーバーにアップロードされData、以前のバージョンでは問題なく動作していました。
サーバー上のトークンが電話機上のトークンと一致することを確認しました。
のすべてのターゲットに対してプッシュ通知を有効にしCapabilities、 もチェックしましたAdd the push Notifications entitlement to your entitlements file
プッシュでは何も受信されません。
ここで間違っている点について何かアイデアはありますか? 何かご指摘いただければ幸いです。

ありがとうございます!

編集: iOS9 ではプッシュ通知が機能していないことにも気付きました。

ベストアンサー1

ビルド設定 > コード署名エンタイトルメントにエンタイトルメント ファイルへの参照があることを確認しましたか? [AppName].entitlements。

資格ファイルに正しい情報が含まれていることを確認します。

(キー:APS環境、値:開発)

それ以外では、プッシュ証明書の再生成を試すことができます。IOS 10 へのアップグレード後に本番環境で動作させるには、新しい証明書を作成する必要がありました (ただし、サンドボックス環境では不要です)。

おすすめ記事