Как определить, что фоновое приложение выходит на первый план в действии касания локального уведомления
Apple Doc Как привлечь внимание пользователя в фоновом режиме
Уведомления - это способ для приложения, которое приостановлено, находится в фоновом режиме или не работает, чтобы привлечь внимание пользователя.
Мое приложение разбудило iOS из-за мониторинга региона и is in the background
и опубликовать местное уведомление. Пользователь коснется уведомления и приложение будет на переднем плане.
Как определить, что приложение выходит на передний план из-за уведомлений, прослушиваемых пользователем?
Какой метод делегата будет содержать информацию уведомления.
didFinishLaunchingWithOption or didReceiveLocalNotification
3 ответа
Если ваше приложение работает в фоновом режиме и вы нажали на баннер LocalNotification, то вам будет вызван следующий метод:
-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
после iOS 8:
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler
если приложение не работает в фоновом режиме, вы получите уведомление по адресу:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
if ([launchOptions valueForKey:@"UIApplicationLaunchOptionsLocalNotificationKey"]) {
// here you will get
}
Вы можете определить, в каком состоянии находится ваше приложение, когда сработала UILocalNotification, и если - (void) приложение:(UIApplication *) приложение didReceiveLocalNotification:(UILocalNotification *) вызвано уведомление, это гарантирует получение локального уведомления.
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
// Application was in the background when notification was delivered.
} else {
}
}
Вы можете определить это с помощью application.applicationState
if(application.applicationState == UIApplicationStateInactive)
{
NSLog(@" Inactive");
// when you tapping on notification
}
else if (application.applicationState == UIApplicationStateBackground)
{
NSLog(@" background");
}
else
{
NSLog(@" Active");
}