0

푸시 알림에 등록하는 일반적인 방법은 Appdelegate에 다음 코드를 추가하는 것입니다. 어떤 인터넷 연결이없는 경우apns 푸시 알림을 등록하는 동안 인터넷 회의를 확인하는 데 필요합니까?

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];

어떻게됩니까? 인터넷 연결이 다시 시작되면 응용 프로그램이 푸시 알림에 자동으로 등록하려고합니까?

필요한 인터넷 연결을 확인하고 이미 우리가 활성화 될 응용 프로그램이 추가 또한 경우 다음

if ([wifiConnection wifiConnectivity]){ 
    if (![[NSUserDefaults standardUserDefaults] stringForKey:@"MyAppSpecificGloballyUniqueString"]) {    
     [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 
    } 
} 

처럼 푸시 알림에 등록하기 전에 조건을 등록하는 것을인가 - 그것이 내가 희망이 예상대로 작동합니다.

확인해주십시오.

답변

1

WIFI 나 네트워크가없는 경우 등록 콜백이 호출되지 않으므로 등록 방법을 호출하기 전에 연결을 확인할 필요가 없습니다.

registerForRemoteNotificationTypes:을 호출 할 때 WIFI 또는 셀룰러 연결이 없는데도 연결이 다시 돌아 오면 그 순간에 대리인 메서드 application:didRegisterForRemoteNotificationsWithDeviceToken:이 호출됩니다.

두 번째 사항에 대해서는 앱이 시작될 때마다 기기 토큰을 등록해야합니다. 푸시 알림에 대한 애플의 가이드 라인을 자세히 봐, 그것은 정말 잘 설명되어 있습니다 https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

가 실행 할 때마다 등록하고 장치가 토큰을 요청하여 공급자에게 현재 토큰

를 제공해야하는 응용 프로그램 및 응용 프로그램이 시작될 때마다 공급자에게 전달하면 공급자에게 장치의 현재 토큰이 있는지 확인할 수 있습니다. 사용자가 백업이 만들어진 장치 나 컴퓨터가 아닌 다른 장치 나 컴퓨터에 백업을 복원 한 경우 (예 : 사용자가 데이터를 새 장치 나 컴퓨터로 마이그레이션), 응용 프로그램을 적어도 한 번 실행해야합니다 알림을 다시받습니다. 사용자가 백업 데이터를 새 장치 또는 컴퓨터로 복원하거나 운영 체제를 다시 설치하면 장치 토큰이 변경됩니다. 또한 장치 토큰을 캐시하지 않고 공급자에게 제공하십시오. 언제든지 필요할 때마다 시스템에서 토큰을 가져와야합니다. 응용 프로그램이 이미 등록되어있는 경우 registerForRemoteNotificationTypes :를 호출하면 추가 오버 헤드없이 즉시 장치 토큰을 대리인에게 전달합니다.

당신은 applicationDidFinishLaunching:에서 장치를 등록해야합니다, didBecomeActive에서 그것을 호출 할 필요는 토큰이 경우 변경하지 않습니다.