2012-02-07 2 views
2

푸시 알림과 관련된 하나의 iPhone 앱에서 작업하고 있습니다. 나는 많은 문서와 튜토리얼에서 보았 듯이이 밀어 넣기 알림을 등록하기 위해 제안하는 다음과 같은앱이 iPhone을 실행하지 않는 동안 푸시 알림 받기

application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

에서 :

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeBadge| UIRemoteNotificationTypeSound]; 

    ... 
} 

이제 문제는 앱이 실행되지 않은 경우

(심지어에서 배경), 밀어 넣기가 올 때 밀어 넣기 메시지를 처리 ​​할 수 ​​없지만 알림 영역에서 다시 밀어 넣기 메시지를 사용하고 다시 응용 프로그램을 점심을 먹으면 내 메시지를 가져올 수 있습니다.

처음으로 점심 식사를 할 때도 내 앱에 푸시 메시지가 표시되도록하려면 어떻게해야합니까?

+0

어떻게 당신이 등록한 전에 장치에 푸시를 보내려고는 키를 가지고 &하지만, 서버에 전송? – mattjgalloway

+0

앱이 과거에 사용 되었다면 내 서버는 장치 토큰을 추적 할 것이므로 그 시점에 망치고 있지는 않지만 푸시를 보낼 수 있습니다. 하지만 이제 문제는 앱이 처음 출시 될 때입니다. 알림을 처리하지 않도록 알림을 신청하려고합니다. 이 문제를 어떻게 해결할 수 있습니까? – shebelaw

+0

뭐라고 요? 나는 당신이 혼란스러워했다고 생각합니다. @ warrenm의 대답을 참조하십시오. – mattjgalloway

답변

6

등록 및 알림 수신이라는 개념이 모호 할 수 있습니다. 이 메서드는 처음에 푸시 알림을 보내는 데 사용되는 푸시 토큰을 제공하므로 앱에서 처음으로 registerForRemoteNotificationTypes: 메서드가 호출되기 전에 푸시 알림을받을 수 없습니다.

그래서 앱을 처음 실행할 때와 프로그램을 실행하는 동안 두 가지 상황에서 알림을받는 것에 대해 이야기해야합니다.

첫 번째 유형의 알림을 처리하려면 사전을 application:didFinishLaunchingWithOptions:으로 보내야합니다. 다음 코드는 시작시받은 알림을 앱이 이미 실행 중일 때 푸시 알림이 도착할 때 호출되는 대리자 메서드로 라우팅하는 방법을 보여줍니다. 당신의 application:didFinishLaunchingWithOptions: 재정의

장소이 :

NSDictionary *pushNotificationPayload = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
if(pushNotificationPayload) { 
    [self application:application didReceiveRemoteNotification:pushNotificationPayload]; 
} 
+0

예, 아마도 이것이 올바른 해결책 일 것입니다. 테스트 해 보겠습니다. Thanks Warrenm – shebelaw

+0

네, 맞습니다.하지만 푸시 알림이 아닌 앱 아이콘을 클릭하면 알림 ('didReceiveRemoteNotification' 메서드 안에있는'UIAlert')이 나타납니다. –

+0

1 년이 넘는 답변에 대한 의견보다는 새로운 질문으로 게시하는 것이 더 나을 것입니다. – warrenm