2015-06-28 3 views
1

Ищите хорошую практику касательно ручек push-уведомлений. В настоящее время в моем приложении я обрабатываю push-уведомления в didFinishLaunchingWithOptions и в didReceiveRemoteNotification делегатов. Я заметил, что обе обработки логики «стреляют», когда я получаю push-уведомления, когда приложение «Dead». Мой удаленный флаг уведомлений в режимах фона ВКЛ в моем приложении. Есть ли хорошая практика для обработки этого сценария? почему я получаю push-данные в didFinishLaunchingWithOptions (launchOptions), а didReceiveRemoteNotification тоже вызывается? Насколько мне известно, didReceiveRemoteNotification не подвергается шпионам, чтобы получить вызов, когда приложение «Dead».iOS Push Notifications handle

ответ

1

didReceiveRemoteNotification вызывается при получении уведомления и при открытии приложения из уведомления. Загрузка фонограмм НЕ запускается, если ваше приложение мертво и вообще не открывается. То, что вы испытываете, это didReceiveRemoteNotification, вызываемый, потому что вы прослушиваете уведомление. Что вам нужно сделать, так это добавить некоторую логику к этому методу, чтобы узнать, в каком состоянии находится приложение, и иметь дело с вашим уведомлением.

т.е.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 
{ 


    if ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) { 

     [[NSNotificationCenter defaultCenter] postNotificationName:@“inactivePush" object:nil]; 


    } 

    else if([UIApplication sharedApplication].applicationState==UIApplicationStateActive){ 



     [[NSNotificationCenter defaultCenter] postNotificationName:@"appOpenPush" object:nil]; 


    } 

    //When the app is in the background 
    else { 



    }//End background 

} 

} 

Первый случай для если приложение неактивно (открыт от толчка), во-вторых, когда приложение на самом деле открыт, а третий для когда приложение находится в фон. Я использую NSNotifcation как пример, но вы можете использовать любой код обработки, который вы хотите. Причина, по которой я добавил окончательный вариант, состоит в том, что вы можете поместить свой код фона/загрузки там, и таким образом он не будет загружать вещи дважды, то есть если вы получите уведомление, а затем нажмите на него.

+0

привет, у меня есть аналогичный сценарий, но требуется небольшая модификация, но, как когда я получаю push-уведомление, приложение будет активно работать в фоновом режиме и выполнять задание, введенное в приложение - (void): (UIApplication *) didReceiveRemoteNotification : (NSDictionary *) userInfo, но мое приложение не будет активировано, пока пользователь не ответит на уведомление. так, как бы это сделать, когда приложение находится в фоновом режиме? доза, кто знает решение для этого? – Moxarth

Смежные вопросы