Приложение за събуждане от фонов iOS

Използвам безшумни известия, за да събудя приложението си от заден план. Когато затворя приложението си, всичко работи добре, но когато го прекратя (плъзнете нагоре), то спира да работи. Усещам (вибрация), че безшумното известие е доставено, но приложението ми не го обработва. Направих локално известие, което трябва да се задейства, когато пристигнат тихи известия. В моя .plist имам активирани отдалечени известия и фоново извличане. В AppDelegate.m имам това:

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

{

    UILocalNotification *notification_ = [[UILocalNotification alloc]init];

    notification_.alertBody = [NSString stringWithFormat:@"Psst!"];

    notification_.soundName = UILocalNotificationDefaultSoundName;

    [notification_ setFireDate:[NSDate dateWithTimeIntervalSinceNow:2]];

    [notification_ setTimeZone:[NSTimeZone defaultTimeZone]];

    [application setScheduledLocalNotifications:[NSArray arrayWithObject:notification_]];

}

person user894132    schedule 15.02.2015    source източник


Отговори (1)


application:didReceiveRemoteNotification се изпълнява само когато приложението ви действително работи, било то на преден план и на заден план. Ето защо гореспоменатият метод няма да бъде извикан, след като прекратите приложението.

Когато приложението ви не работи и е отворено от известие, известието трябва да се обработва в application:didFinishLaunchingWithOptions вместо това. Речникът launchOptions трябва да съдържа ключ UIApplicationLaunchOptionsRemoteNotificationKey, който се отнася до полезния товар на известията.

За повече информация вижте раздела „Обработка на локални и отдалечени известия“ на Ръководство за програмиране на локални и отдалечени известия

person Markus    schedule 15.02.2015
comment
Трябва да доставя безшумно натискане, за да стартирам приложението си веднъж на ден във фонов режим и сега съм малко объркан. За да постигна това, докато приложението е прекратено, трябва да използвам UIApplicationLaunchOptionsRemoteNotificationKey в application:didFinishLaunchingWithOptions? - person user894132; 15.02.2015
comment
Съжалявам, не забелязах тихата част там. Въпреки това безшумното известяване на AFAIK е просто известие, което има content-available като част от полезния си товар. Боравенето с него в application:didFinishLaunchingWithOptions всъщност няма чак толкова смисъл. - person Markus; 16.02.2015
comment
Как мога да се справя с тихо натискане, когато приложението е прекратено? - person user894132; 16.02.2015
comment
Очевидно не можете да управлявате безшумни известия, когато приложението е прекратено. Вижте този отговор за по-задълбочено обяснение. - person Markus; 16.02.2015
comment
Значи няма начин да събудя приложението си във фонов режим? - person user894132; 16.02.2015