Không nhận được mã thông báo thiết bị APNS trên ios 13


14

Tôi có vấn đề liên quan đến mã thông báo thiết bị APNS. Trước khi tôi sử dụng Xcode 10.2 và iOS 12.1. Tại thời điểm này, tôi đã sử dụng để nhận mã thông báo thiết bị theo phương thức ủy nhiệm

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

Tôi đang đăng ký APNS như thế này và nó đã hoạt động tốt.

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
                if(!error){
                    [[UIApplication sharedApplication] registerForRemoteNotifications];
                }
    }];

Bây giờ khi cài đặt iOS 13 vào thiết bị iPhone của tôi và sử dụng Xcode 11, phương thức ủy nhiệm didRegisterForRemoteNotutionsWithDeviceToken không được gọi. Không thể hiểu vấn đề này. Tôi đã thực hiện nghiên cứu về điều này, tôi biết có một số thay đổi trong việc nhận mã thông báo từ phương thức ủy nhiệm nhưng trong trường hợp của tôi, phương thức ủy nhiệm thậm chí không được gọi. Một lần nữa, nó hoạt động tốt cho iOS 12.


Nó đã được giải quyết ngay bây giờ. Phải tạo tất cả các chứng chỉ cho Xcode 11 từ cổng thông tin dành cho nhà phát triển và nó đã hoạt động.
Phiên bản iOS

@IOSDev Vui lòng ghi lại những gì bạn đã làm. Bây giờ tôi đang gặp phải điều tương tự; Tôi nghĩ có nghiệp tốt ở đây.
Darren Black

1
Bạn đã tìm thấy bất kỳ giải pháp cho điều này? tôi đang chạy với cùng một vấn đề
Aman.Samghani

1
@ Aman.Samghani: CÓ, đây không phải là lần đầu tiên khi cảnh báo được tạo cho Thông báo đẩy. Tôi đã phải gọi lại cùng một mã đăng ký Thông báo đẩy sau đó tôi nhận được mã thông báo thiết bị. Vì vậy, trong hai lần hoặc thử ba lần, tôi đã nhận được mã thông báo.
IOS Dev

Câu trả lời:


14

Chỉ cần khởi động lại iPhone của bạn. Nó đơn giản như vậy và trong 90% trường hợp nó sẽ giải quyết vấn đề của bạn.


1
Tôi ước tôi đọc bình luận này sớm hơn. Đã lãng phí 5 giờ ++ để gỡ lỗi và nhìn chằm chằm điên cuồng vào hồ sơ, v.v.
zuyao88

1
Làm việc cho tôi, iOS 13.3.1
Jhonattan

đó là một điều kỳ lạ xảy ra, tôi đã dành 3 giờ để tìm ra điều gì sai,
fakiho

2

Đăng nhập vào https://appleid.apple.com/ , sau đó mở url " https://developer.apple.com/account/ios/identifier/bundle " hoặc " https://developer.apple.com/account/resource / chứng chỉ / danh sách ".

Đầu tiên, Tạo hai Chứng chỉ mới: (1) Phiên bản phát triển của Apple Development Sign cho các ứng dụng iOS, macOS, tvOS và watchOS của bạn. Để sử dụng trong Xcode 11 trở lên. (2) Phân phối của Apple Ký các ứng dụng của bạn để gửi tới App Store hoặc cho phân phối Ad Hoc. Để sử dụng với Xcode 11 trở lên.

Sau đó tìm menu "Định danh" qua url " https://developer.apple.com/account/resource/identifier/list ". Chỉnh sửa Số nhận dạng của ứng dụng của bạn, đảm bảo rằng Chứng chỉ SSL phát triển & Chứng chỉ SSL sản xuất được thêm vào Thông báo đẩy.

Tiếp theo, mở menu "Hồ sơ" qua url " https://developer.apple.com/account/resource/profiles/list ". Đảm bảo rằng Chứng chỉ dưới dạng Loại phân phối sẽ được sử dụng trong Xcode 11 hoặc trễ và lưu lại

Cuối cùng, tải xuống tệp Hồ sơ cung cấp và các tệp Chứng chỉ CA được tạo cho MAC của bạn, tệp này sẽ được thêm vào XCode và ứng dụng chuỗi khóa bằng cách nhấp đúp vào các tệp riêng biệt.

Hơn thế nữa, hãy nhớ khởi động lại điện thoại di động của bạn và đảm bảo rằng bạn đã thiết lập chính xác thông báo từ xa.


1

Tôi cũng phải đối mặt với vấn đề tương tự. Tôi đã thử nhiều kịch bản. Tôi đã thành công sau khi thực hiện các bước dưới đây:

  1. Thiết bị khởi động lại
  2. Được gọi là registerForRemoteNotifications phương thức trong luồng chính.

Trong trường hợp của tôi, tôi đã nhận được mã thông báo thiết bị, nhưng có sự chậm trễ trong phản hồi (tôi nghĩ do đăng ký thông báo từ xa trong một luồng nền). Nhưng sau khi di chuyển [[UIApplication sharedApplication] registerForRemoteNotifications]trong luồng chính, tất cả đều hoạt động tốt.

Đây là mã của tôi:

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = delegate;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
        if(!error){
            dispatch_async(dispatch_get_main_queue(), ^{
                [[UIApplication sharedApplication] registerForRemoteNotifications];
                [self callCompletion:TRUE completion:completion];
            });
        }
    }];

Hy vọng điều này sẽ giúp.


hoàn toàn không hoạt động
Vyachaslav Gerchicov

0

Tôi chỉ giải quyết vấn đề này theo cách sau các bước dưới đây.

Thêm một số bản in trong phương thức didRegisterForRemoteNotutionsWithDeviceToken và giữ cho các thiết bị được kết nối.

  1. Đã đi đến các khả năng mục tiêu.
  2. Tắt thông báo đẩy
  3. Xây dựng và chạy ứng dụng trên thiết bị và chờ đợi.
  4. Sau đó kiểm tra bảng điều khiển bạn nhận được thông báo lỗi thông báo lỗi.
  5. Dừng chạy ứng dụng.
  6. Bật thông báo đẩy một lần nữa.
  7. Goto https://developer.apple.com/ Chọn Tài khoản -> Chứng chỉ, Số nhận dạng & Chọn dự án của bạn ProvalProfiles -> Phím -> nhấp vào chỉnh sửa và lưu sau khi tải xuống hồ sơ chứng minh đó và nhấp đúp vào nó.
  8. Xây dựng và chạy ứng dụng trên thiết bị.
  9. Sau đó, nó hoạt động tốt.

    Tôi hy vọng điều này sẽ giúp ai đó.


-2

Nó có liên quan đến DeviceSupport bị thiếu trong cài đặt XCode của bạn, cho phiên bản nền tảng được sử dụng bởi thiết bị triển khai của bạn.

Trong trường hợp của tôi, nền tảng 13.1 bị thiếu. Để giải quyết, chỉ cần thêm DeviceSupports trong thư mục

Xcode.app/Contents/Develper/Plevelops/iPhoneOS.pl platform / DeviceSupport

Bạn có thể tải xuống DeviceSupport bị thiếu từ: https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport


Không may mắn @Giuseppe, thậm chí không hoạt động trong 12.4.2
IOS Dev

Nó đã được giải quyết ngay bây giờ. Phải tạo tất cả các chứng chỉ cho Xcode 11 và nó đã hoạt động.
Phiên bản iOS

Tôi đã tạo cả hai chứng chỉ nhưng nó vẫn không hoạt động. Tôi cũng đã kiểm tra DeviceSupports và 13.1 ở đó. Tôi đang sử dụng xcode 11.1 và thử nghiệm trên iphone 7 với iOS 13.1. Bất kỳ đề xuất?
Ugo Chirico

1
Tôi đã thêm các chế độ nền: tìm nạp, xử lý và thông báo từ xa, tôi khởi động lại iphone của mình và sau đó nó hoạt động. Thực sự tôi không hiểu tại sao nhưng bây giờ nó hoạt động
Ugo Chirico

Làm thế nào hỗ trợ thiết bị cho giả lập thuộc về một vấn đề liên quan đến một thiết bị thực?
Vyachaslav Gerchicov

-2

Thử cái này.

  1. Xóa ứng dụng của bạn.
  2. Khởi động lại điện thoại của bạn.
  3. Xây dựng và chạy (cài đặt lại ứng dụng của bạn) trên thiết bị của bạn.

Nó làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.