2012-08-29 5 views
5

애플리케이션이 실행되고 있지 않을 때 푸시 알림 수신에 관한 여러 가지 질문을 여기에서 읽었습니다 (배경이 아닌, 완전히 종료 됨) . This question in particular은 launchOptions 사전을 사용하여 수신하는지 확인하는 방법을 찾는 데 가장 도움이됩니다.앱 실행 중 알림 푸시 - launchOptions 사전이 비어 있음

그러나 나는 매우 혼란스럽고, 내 부분에서 엄청난 감독이 될 수 있음을 인정합니다. 응용 프로그램이 종료 된 상태에서 장치가이 응용 프로그램에 대한 푸시 알림을 받으면 나중에 응용 프로그램을 열 때, launchOptions 사전은 널 포인터입니다. 앞에서 언급 한 링크 및 다른 장소에서 허용되는 대답에 대한 설명에서 알림 페이로드를 볼 수 있어야합니다. 그러나 아무것도 없다. iOS 5.1.1 용으로 개발 중입니다.

다른 생각은 시작시 배지 수를 확인하는 것입니다 (0보다 커, 뭔가를하십시오 ...). 그러나 이것은 매우 신뢰할 수없는 것 같습니다.

내가 누락 된 내용을 누구에게 말해 줄 수 있습니까? 당신의 도움에 미리 감사드립니다!

+0

페이로드 내부 내용은 무엇입니까? – msk

+0

@MSK 미안하다. 이해가 안된다. 내 서버에서 보낸 원래 푸시가 페이로드로 무엇인지 묻고 있니? 그렇다면 페이로드는 기본이며 평소 배지, 경고 및 소리 이상의 맞춤 설정은 포함되어 있지 않습니다. –

+0

내 대답보기 – msk

답변

7

application:didFinishLaunchingWithOptions:은 알림으로 인해 앱이 시작될 때 페이로드 정보로만 호출됩니다. 예 : 사용자가 알림 경고 (알림 센터에 추가됨)를 통해 누를 지 페이로드 (뉴스 스탠드 알림)에 content-avialble = 1과 함께 수신 된 알림이 & 인 경우이 문제가 발생할 수 있습니다.

앱이 백그라운드 일 때 앱에서 알림을 받으면. 그것은 뉴스 스탠드 알림 또는 사용자가 법 아래 경고의 동작 버튼을 통해 탭 경우 UIApplicationStateActive 동일하지 [[UIApplication sharedApplication] applicationState]

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

라고합니다.

위의 경우 사용자가 알림 알림의 동작 버튼을 탭하여 앱을 실행하지 않으면 didFinishLaunchingWithOptions 또는 didReceiveRemoteNotification이 호출되지 않습니다.

앱이 전경에있는 동안 알림을 받으면 didReceiveRemoteNotification이라고 부르는 [[UIApplication sharedApplication] applicationState]UIApplicationStateActive과 같습니다.

notification의 배지의 경우 앱이 실행되고 있지 않으면 코드가 실행되지 않고 앱 아이콘에서 배지가 1 씩 증가합니다. 앱을 실행하면 (앱 아이콘을 탭) 일반적으로 didFinishLaunchingWithOptions이 호출됩니다. (알림이 수신되었을 때 앱이 배경 또는 전경에있는 경우 위와 동일)

나는 모든 가능한 경우를 다루고 있다고 생각합니다. 또한 배경 사례는 iOS SDK >= 4.0에 유효합니다.

+0

아하, 답변 해 주셔서 감사합니다. 내 주요 목표는 푸시가 수신되면 서버에서 일부 데이터를 가져 오는 것이 었습니다. 우리는 배경과 전경에서이 작업을했습니다. 그리고 앱이 오프라인 상태 일 때 푸시가 수신되면로드 할 때이를 감지 할 수 있었으면합니다. 사용자가 알림 표시 줄에 닿지 않으면 사용자의 대답에 따라 이것이 불가능하다는 것을 알 수 있습니다. 귀하의 의견으로는 부하시 배지 수를 확인하는 것이 신뢰할 수 있습니까? –

+0

서버에서 배지 수를 유지해야합니다. [이 질문은] (http : // stackoverflow.co.kr/questions/1942605/push-notification-badge-auto-increment) – msk

+0

아, 그래, 난 이미 그걸 알았어. 그건 내가 뭘 요구하고 있었는지는 분명하지 않습니다. 저는 앱내에서 [application applicationIconBadgeNumber]를 사용하여 배지 수를 확인할 수 있다는 것을 알고 있습니다. 배지 개수가 0보다 큰지 여부를 확인하는 것이 신뢰할 수 있는지 궁금합니다 ('[application applicationIconBadgeNumber]> 0'). 왜 내가 ** 그렇게하지 않아야하는 이유가 있습니까? –