Tôi đã gặp vấn đề tương tự: gọi điện registerForRemoteNotificationTypes: gọi không phải application:didRegisterForRemoteNotificationsWithDeviceToken:và cũng khôngapplication:didFailToRegisterForRemoteNotificationsWithError:
Cuối cùng tôi đã giải quyết được vấn đề này với sự trợ giúp của ghi chú kỹ thuật của Apple TN2265 .
Đây là những gì tôi đã làm:
Trước hết, tôi đã kiểm tra kỹ xem tôi có thực sự đăng ký chính xác cho Thông báo đẩy hay không , bao gồm việc xác minh hồ sơ cấp phép của tôi cho khóa "aps-environment" và việc thiết kế mã của chính tệp .app. Tôi đã thiết lập tất cả một cách chính xác.
Sau đó, tôi phải gỡ lỗi thông báo trạng thái Thông báo đẩy trong bảng điều khiển (bạn cần cài đặt cấu hình cấp phép PersistonConnectionLogging.mobileconfig trên thiết bị của mình và khởi động lại nó. Xem TN2265 trong "Quan sát thông báo trạng thái đẩy"). Tôi nhận thấy rằng quy trình apns bắt đầu hẹn giờ và tính toán ngày kích hoạt tối thiểu, điều này khiến tôi nghi ngờ rằng thông báo xác nhận đăng ký Thông báo đẩy, thường được trình bày tại thời điểm này, được APNS hỗ trợ, như được chỉ ra trong TN2265:
Đặt lại Cảnh báo quyền thông báo đẩy trên iOS
Lần đầu tiên một ứng dụng hỗ trợ đẩy đăng ký nhận thông báo đẩy, iOS sẽ hỏi người dùng xem họ có muốn nhận thông báo cho ứng dụng đó hay không. Khi người dùng đã trả lời cảnh báo này, nó sẽ không hiển thị lại trừ khi thiết bị được khôi phục hoặc ứng dụng đã được gỡ cài đặt trong ít nhất một ngày.
Nếu bạn muốn mô phỏng lần chạy ứng dụng đầu tiên của mình, bạn có thể gỡ cài đặt ứng dụng trong một ngày. Bạn có thể đạt được điều sau mà không thực sự phải đợi một ngày bằng cách đặt đồng hồ hệ thống tiến lên một ngày hoặc hơn, tắt hoàn toàn thiết bị, sau đó bật lại thiết bị.
Vì vậy, tôi đã xóa ứng dụng khỏi thiết bị, sau đó thay đổi thủ công ngày của iPhone trong Cài đặt, khởi động lại thiết bị và cài đặt lại ứng dụng.
Lần tiếp theo mã của tôi được gọi registerForRemoteNotificationTypes, nó đã nhận được các cuộc gọi lại như mong đợi.
Điều này giải quyết vấn đề cho tôi. Hy vọng nó giúp.