2016-09-17 1 views
0

Я используюКак получить состояние приложения в уведомлении iOS 10?

userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler 

для получения ответа на уведомление в ИО 10, может кто-нибудь сказать мне, как получить состояние приложения в нем?

Поскольку в прошивке 9 или прежде, чем я использовал

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

В этом методе, мы можем получить состояние приложения на

application.applicationState 

спасибо за помощь.

ответ

0

I сделал поиск, и я получил эти методы

- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{ 
NSLog(@"for handling push in foreground"); 
// Your code 
NSLog(@"%@", notification.request.content.userInfo); //for getting response payload data 
} 

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { 
NSLog(@"for handling push in background"); 
// Your code 
NSLog(@"%@", notification.request.content.userInfo); //for getting response payload data 
} 
+0

там является третьим состоянием - UIApplicationState.Inactive, который немного отличается от Background, т.е. состояния, когда приложение принудительно закрыто. Любая идея, как мы можем проверить это для UNUserNotificationCenter –

0

Что-то вроде этого:

NSString * state = @"Unknown"; 
UIApplication *application = [UIApplication sharedApplication]; 
if (application.applicationState == UIApplicationStateInactive) { 
    //The application received the notification from an inactive state, i.e. the user tapped the "View" button for the alert. 
    //If the visible view controller in your view controller stack isn't the one you need then show the right one. 
    state = @"UIApplicationStateInactive"; 
} 

if(application.applicationState == UIApplicationStateActive) { 
    //The application received a notification in the active state, so you can display an alert view or do something appropriate. 
    state = @"UIApplicationStateActive"; 
} 

if(application.applicationState == UIApplicationStateBackground) { 
    state = @"UIApplicationStateBackground"; 
} 
+0

'UIApplication * применение = [[UIApplication sharedApplication] .applicationState],' эта линия будет давать ошибку, потому что '[[UIApplication sharedApplication] .applicationState]' вернет '' UIApplicationState' не UIApplication' – Lion

+0

Конечно, просто быстро набрав – nerowolfe

0

Вы можете получить состояние приложения из любого места в вашем проекте что-то вроде,

UIApplication *applicaiton = [UIApplication sharedApplication]; 

if (applicaiton.applicationState == UIApplicationStateBackground) { 

    NSLog(@"background state"); 
} 

же, как вы можете использовать UIApplicationStateActive,UIApplicationStateInactive etc для получения соответствующего государственного