2013-03-05 3 views
10

알림을 표시하거나 앱을 열지 않고도 배지에서 번호를 업데이트 할 수 있나요?iOS 푸시 알림 - 알림없이 배지를 업데이트 하시겠습니까?

나는 아이콘 배지에 현재 읽지 않은 메시지의 수를 항상 표시해야하는 앱을 작성하고 있지만 사용자에게 경고를 표시하지 않고 그렇게하고 싶습니다.

iOS 5.0 이상을 개발 중입니다.

편집 : 앱을 실행하지 않을 때 더 명확히하려면 을 실행하는 방법에 대해 묻습니다. 서버가 경고를 표시하지 않고 새 배지 번호를 밀어 넣기를 원합니다. 가능합니까?

+0

AFAIK 완전히 OS에서 처리합니다. 알리미를 보여주고 싶지 않은 특별한 이유가 있습니까? – Anupdas

+0

앱이 매우 높은 메시지 빈도로 구축되어있어 사용자를 괴롭 히고 싶지 않습니다. 사용자가 말한대로 - 사용자가 알림 센터로 이동하여 알림을 사용 중지하는 경우에만이 동작을 수행 할 수 있습니까? –

+0

@ Pandu1251가 마지막 문장을 이해하지 못했습니다. 무슨 논리로 말하고 있습니까? –

답변

23

할 수 있습니다. 경고없이 푸시 알림을 보낼 수 있습니다. 배지 알림에만 응용 프로그램을 등록 할 수도 있습니다.이 경우 공급자 서버는 경고 또는 소리를 보낼 수도 없습니다.

알림 페이

각 푸시 통지 함께 페이로드를 운반한다. 페이로드 은 클라이언트 응용 프로그램에 이 다운로드되기를 기다리는 데이터에 대한 경고 메시지를 표시하는 방법을 지정합니다. 알림 페이로드에 허용되는 최대 크기는 256 바이트입니다. Apple 푸시 알림 서비스 은이 제한을 초과하는 모든 알림을 거부합니다. 알림 배달은 이며 "최선의 노력"이므로 보장하지 않습니다.

각 알림에 대해 공급자는 RFC 4627을 엄격히 준수하는 JSON 사전 개체를 작성해야합니다.이 사전에는 키 사전으로 식별 된 사전이 포함되어야합니다. APS의 사전 는 하나 개 이상의 속성 다음 작업 지정이 포함

경고 메시지가 재생

소리와 함께 응용 프로그램 아이콘을 배지에 사용자

에 숫자를 표시 할을

one or more of the properties입니다. alert 속성은 선택 사항입니다. 빈 aps 사전 (즉, 맞춤 속성 만 전송)으로 알림을 보낼 수도 있습니다.

실시 예 5.다음 예제는 공백 AP 사전을 보여줍니다. 배지 속성이 없기 때문에 응용 프로그램 아이콘에 표시된 의 현재 배지 번호가 제거됩니다. acme2 사용자 정의 특성은 두 개의 정수 배열 입니다. (가) 사용자 만이 그것을 그에게 묻는 경고가 표시됩니다 경고

{ 

    "aps" : { 

    }, 

    "acme2" : [ 5, 8 ] 

} 

는/그녀는 푸시 알림을 허용할지 여부를 지정합니다. 알림은 설치 후 앱이 처음 시작될 때만 표시됩니다. 모든 따옴표가 애플 현지에서 촬영 및 가이드를 프로그래밍 푸시 알림있다

Listing 2-3 Registering for remote notifications 

- (void)applicationDidFinishLaunching:(UIApplication *)app { 

    // other setup tasks here.... 

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

} 



// Delegation methods 

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 

    const void *devTokenBytes = [devToken bytes]; 

    self.registered = YES; 

    [self sendProviderDeviceToken:devTokenBytes]; // custom method 

} 



- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 

    NSLog(@"Error in registration. Error: %@", err); 

} 

:이 예에서

당신은 비 경고 알림 (배지와 만 소리)에 등록합니다.

+0

Eran, 후속 질문이 있습니다. 내 앱이 백그라운드 모니터링 사용자 위치에서 실행중인 경우 앱이 사용자에게 알리거나 앱을 열지 않고도 알림을 받고 일부 코드를 실행할 수 있습니까? 푸시 알림을 받으면 앱이 서버에 위치 정보를 보내길 원합니다 ... – Trj

+0

페이로드에 배지 번호가있는 푸시 알림을 보낼 수 있습니다. bcoz는 배지 개념을 사용하고 싶지 않습니다. 또는 배지 번호 "0"으로 설정해야합니다. – siva

+0

@siva 물론 가능합니다. 배지 매개 변수는 선택 사항입니다. – Eran

1

당신은 내가 배지 카운터를 추가로까지 경고없이 할 수 있습니다 생각하지 않습니다 로컬 앱 배지 번호

[UIApplication sharedApplication].applicationIconBadgeNumber = number_of_notifications; 

을 처리 applicationIconBadgeNumber를 사용해야합니다

[UIApplication sharedApplication].applicationIconBadgeNumber = aNumber; 
+0

죄송합니다. 명확하지 않았습니다. 앱 폐쇄 시점을 의미합니다. 내 편집을 참조하십시오. –

1

을 사용할 수 있습니다 원격 통지에서. 당신은 약 APN Service, 당신은 UIRemoteNotificationTypeBadge에 등록 할 수 있습니다 귀하의 경우는 약 Local & Push Notification Programming guide

+0

죄송합니다. 명확하지 않았습니다. 앱 폐쇄 시점을 의미합니다. 내 편집을 참조하십시오. –

+0

그런 경우에는 didReceiveRemoteNotification 메소드가 있으며이 메소드 내에서 원하는 모든 작업을 수행 할 수 있습니다. – nsgulliver

+0

사용자가 앱을 실행하지 않고도 배지를 업데이트하려고합니다. 사용자가 이미 앱을 열었을 때 아무런 가치가 없습니다. iOS 내장 메일 앱과 같은 종류입니다. –

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

{ 

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
} 

사용이 방법을 읽어야 읽어야합니다 ....이 유 도움이 될 것입니다.

+0

내 편집/다른 추천을 참조하십시오 ... –