iOS 13에서 APNS 장치 토큰을 가져 오지 못함


14

APNS 장치 토큰과 관련된 문제가 있습니다. Xcode 10.2 및 iOS 12.1을 사용하기 전에 지금은 델리게이트 메소드에서 장치 토큰을 가져 왔습니다.

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

이와 같은 APNS에 등록하고 있으며 정상적으로 작동했습니다.

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

이제 iOS 13을 내 iPhone 장치에 설치하고 Xcode 11을 사용하면 대리자 메서드 didRegisterForRemoteNotificationsWithDeviceToken이 호출되지 않습니다. 이 문제를 이해할 수 없습니다. 나는 이미 이것에 대해 연구를 해 왔으며, 위임 메소드에서 토큰을 얻는 데 약간의 변화가 있지만 내 경우에는 위임 메소드가 호출되지 않는다는 것을 알고 있습니다. iOS 12에서도 잘 작동합니다.


이제 해결되었습니다. 개발자 포털에서 Xcode 11에 대한 모든 인증서를 작성해야했습니다.
IOS Dev

@IOSDev 당신이 한 일을 문서화하십시오. 나는 지금 같은 일을 겪고있다. 여기에 좋은 업장이 있다고 생각합니다.
Darren Black

1
이에 대한 해결책을 찾았습니까? 나는 같은 문제로 달리고있다.
Aman.Samghani

1
@ Aman.Samghani : 예, 푸시 알림에 대한 경고가 생성 될 때 처음이 오지 않습니다. 동일한 푸시 알림 레지스터 코드를 다시 호출 한 다음 장치 토큰을 얻었습니다. 그래서 두 번이나 trice에서 토큰을 얻습니다.
iOS Dev

답변:


14

iPhone을 재부팅하십시오. 그렇게 간단하고 90 %의 경우 문제를 해결할 것입니다.


1
이 의견을 더 일찍 읽으시기 바랍니다. 5 시간 동안 낭비되어 프로필 등을
엉망으로

1
나를 위해, iOS 13.3.1
Jhonattan

그것은 이상한 일이다. 나는 3 시간 동안 무엇이 잘못되었는지 알아 내었다
fakiho April

2

https://appleid.apple.com/에 로그온 한 다음 url " https://developer.apple.com/account/ios/identifier/bundle "또는 " https://developer.apple.com/account/resources를여십시오. / certificates / list ".

먼저 두 가지 새로운 인증서를 만듭니다. (1) iOS, macOS, tvOS 및 watchOS 앱의 Apple Development Sign 개발 버전. Xcode 11 이상에서 사용합니다. (2) Apple Distribution App Store 또는 Ad Hoc 배포에 제출할 앱에 서명합니다. Xcode 11 이상과 함께 사용하십시오.

그런 다음 URL " https://developer.apple.com/account/resources/identifiers/list " 를 통해 "식별자"메뉴를 찾으십시오 . 앱의 식별자를 편집하고 개발 SSL 인증서 및 프로덕션 SSL 인증서가 푸시 알림에 추가되어 있는지 확인하십시오.

그런 다음 URL " https://developer.apple.com/account/resources/profiles/list " 를 통해 "프로필"메뉴를 엽니 다 . Xcode 11 이상에서 사용될 DistributionFor의 유형으로 인증서를 확인하고 저장하십시오.

마지막으로, MAC에 생성 된 프로비저닝 프로파일 파일과 CA 인증서 파일을 다운로드하십시오.이 파일은 파일을 두 번 클릭하여 XCode 및 키 체인 응용 프로그램에 추가됩니다.

또한 휴대 전화를 재부팅하고 원격 알림을 올바르게 설정했는지 확인하십시오.


1

나는 또한 같은 문제에 직면했다. 나는 많은 시나리오를 시도했다. 아래 단계를 수행 한 후 성공했습니다.

  1. 다시 시작된 장치
  2. registerForRemoteNotifications 메인 스레드에서 메소드를 호출했습니다 .

필자의 경우 장치 토큰을 얻었지만 응답이 지연되었습니다 (배경 스레드에 원격 알림을 등록했기 때문에 생각합니다). 그러나 [[UIApplication sharedApplication] registerForRemoteNotifications]메인 스레드 로 이동 하면 모든 것이 잘 작동합니다.

내 코드는 다음과 같습니다.

    [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];
            });
        }
    }];

이것이 도움이되기를 바랍니다.


전혀 작동하지 않습니다
Vyachaslav Gerchicov

0

방금 아래 단계에 따라이 문제를 해결했습니다.

didRegisterForRemoteNotificationsWithDeviceToken 메소드에 인쇄를 추가하고 장치를 연결 상태로 유지하십시오.

  1. 목표 능력에 갔다.
  2. 푸시 알림 끄기
  3. 기기에서 앱을 빌드하고 실행하고 기다립니다.
  4. 그런 다음 Fail push notification 오류 메시지가 표시된 콘솔을 확인하십시오.
  5. 앱 실행을 중지하십시오.
  6. 푸시 알림을 다시 켭니다.
  7. 고토 https://developer.apple.com/ 계정 선택 -> 인증서, 식별자 및 프로젝트 ProvisionalProfiles를 선택 -> 키 -> 거기에 그 다운로드 provisonal 프로필을 더블 클릭 한 후 편집과 저장을 클릭합니다.
  8. 기기에서 앱을 빌드하고 실행합니다.
  9. 그런 다음 잘 작동합니다.

    나는 이것이 누군가를 돕기를 바랍니다.


-2

배포 장치에서 사용하는 플랫폼 버전의 XCode 설치에서 누락 된 DeviceSupport와 관련이 있습니다.

제 경우에는 13.1 플랫폼이 없습니다. 해결하려면 폴더에 DeviceSupports를 추가하십시오.

Xcode.app/Contents/Develper/Platforms/iPhoneOS.platform/DeviceSupport

https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport 에서 누락 된 DeviceSupport를 다운로드 할 수 있습니다.


12.4.2에서는 작동하지 않는 @Giuseppe도 운이 없다
IOS Dev

이제 해결되었습니다. Xcode 11에 대한 모든 인증서를 작성해야했으며 작동했습니다.
IOS Dev

두 인증서를 모두 만들었지 만 여전히 작동하지 않습니다. 또한 DeviceSupports를 확인했으며 13.1이 있습니다. xcode 11.1을 사용하고 iOS 13.1이 설치된 iphone 7에서 테스트하고 있습니다. 어떤 제안?
Ugo Chirico

1
가져 오기, 처리 및 원격 알림, 배경 모드를 추가했습니다. 아이폰을 재부팅 한 다음 작동했습니다. 정말 이해가
안되지만

시뮬레이터에 대한 장치 지원은 실제 장치와 관련된 문제에 어떻게 속합니까?
Vyachaslav Gerchicov

-2

이 시도.

  1. 응용 프로그램을 제거하십시오.
  2. 휴대 전화를 재부팅하십시오.
  3. 장치에서 빌드 및 실행 (응용 프로그램 재설치)

그것은 나를 위해 일했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.