2013-03-07 2 views
1

웹 인터페이스에서 장치로 간단한 메시지를 푸시 알림 형식으로 보낼 수있는 간단한 메시징 시스템을 작성했습니다.Apple 푸시 알림 - 배달 확인

안드로이드에서 장치가 알림을 받으면 모든 것이 잘되었다. 서버에 배달 확인 영수증을 보낸 다음 승인을 읽습니다. 분명히 앱이 백그라운드에서 실행 중이거나 전화가 잠 들어있는 동안 배달 확인이 자주 발생합니다.

iOS 용 비슷한 앱을 작성했습니다. 그 응용 프로그램이 놀랍다 : didReceiveRemoteNotification은 응용 프로그램이 활성화되어 있지 않을 때 호출되지 않습니다!

앱이 활성화되지 않은 경우 사용자 개입없이 메시지 전송을 추적하는 것이 정말로 불가능합니까? 다른 사람들은 서버에 메시지를 저장하고 앱을 열 때 메시지를 보내도록 제안했지만 여전히 사용자 상호 작용이 필요합니다.

백그라운드 서비스에 대한 사과 제한이 있습니까? 백그라운드에서 백그라운드에서 간단한 POST 요청을 허용하기 위해 어딘지로 내 앱이 사운드 또는 위치 서비스를 사용하도록 할 수 있습니까? 소스 일에 대한

답변

0

http://cydia.saurik.com/package/backgrounder

확인하는 것이 밖으로는 개발자 페이지를 클릭합니다.

사과가 아니라면 방법이 없습니다.

jailbreaking이 나오는 곳입니다. 당신은 응용 프로그램을 본때를 보여주고 호환시킬 수 있어야하고 더 많은 힘을 얻어야합니다.

내가 원하는 것을 말하면 원하는 방식으로 작동하는 새 버전의 Backgrounder를 만들 수 있습니다.

+0

이제이 기능은 훌륭하지만 모든 사용자에게 JB에 장치를 제공하도록 설득 할 수있는 방법은 없습니다. – selytch

+0

수백만 개의 탈옥 사용자가 10 만 가지가 있으며 그 중 수백만 가지가 기꺼이 앱 비용을 지불합니다. 나는 내 자신이 전화기를 위해 많은 $$을 소비하여 사과가 훨씬 더 좋게 만들었습니다. 다른 커뮤니티에 들어가서 낙담하지 마십시오. 본때를 보여주는 앱을 출시하는 것은 매우 효과적이며 아웃 리치는 멀리 있습니다! – NicholasLAranda

2

백그라운드 서비스를 잘못 사용하면 앱을 거부하는 좋은 방법입니다. 애플은 앱이 백그라운드에서 할 수있는 것에 상당히 엄격하다.

사용자로서 설치 한 앱이 백그라운드에서 웹 요청을하는 데 아무런 이유가없는 것으로 밝혀지면 신속하게 삭제됩니다!

푸시 알림은 단방향 메시지이므로 알림이 배달되었다고 보장 할 수는 없으며 읽지 마십시오. APNS here에서 읽어 보시기 바랍니다.

+0

설명서를 읽었습니다. 그러나이 프로그램의 목적은 특히 배후에서 실행될 때 전달을 확인하는 것입니다. 이것이 바로 사용자가 첫 번째 장소에서 다운로드하는 이유입니다. – selytch

0

응용 프로그램이 활성 상태 응용 프로그램에 있지 않은 경우 didReceiveRemoteNotification 메서드가 호출되지 않습니다.

응용 프로그램이 활성 상태가 아닐 때 알림 정보를 추적하려면 다음 절차를 따르십시오.

응용 프로그램의 didFinishLaunchingWithOptions은 : 우리는 우리가있는 NSDictionary 객체라고 launchOptions을 받고이 방법에서 응용 프로그램

을 열 때 방법은 때마다 호출됩니다. 인 iOS7에에서

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
NSDictionary *remoteNotify = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; 
//Accept push notification when app is not open 
if (remoteNotify)   // it is only true when you get the notification{ 
    // use the remoteNotify dictionary for notification data}} 
3

을 당신이 가져 배경으로 푸시 알림을 사용할 수 있습니다 :이 launchOptions 사전에서 우리는 아래의 코드를 찾을 키 UIApplicationLaunchOptionsRemoteNotificationKey

에 대한 사전의 형태로 통지 데이터를 얻을 것이다 콘텐트 이용 가능 플래그가 설정된 원격 통지. 예제 페이로드 : {aps : {content-available : 1}}. 이 경우 iOS가 앱을 깨울 것입니다 (일부 제한 사항은 Will iOS launch my app into the background if it was force-quit by the user? 참조).

앱이 깨어 난 후 30 초 내에 서버에 푸시 알림 수신 확인을 보낼 수 있습니다. 또한이 방법을 포함 할 대상 백그라운드 모드에서 "배경 가져 오기"기능을 활성화하고 AppDelegate에 업데이트해야합니다 :

- (void)application: (UIApplication *)application didReceiveRemoteNotification: 
    (NSDictionary *)userInfo fetchCompletionHandler: 
    (void (^)(UIBackgroundFetchResult))completionHandler 

그래서 이것이 당신의 측면에서 약간의 작업이 필요합니다.

이 정보가 도움이되기를 바랍니다.