Ваш код для планирования локального уведомления выглядит хорошо. Вероятно, вы также должны добавить некоторые данные в свойстве userInfo
локального уведомления, чтобы при его запуске вы могли проверить это свойство и сделать что-то другое (воспроизвести определенное видео) в соответствии с данными внутри userInfo
.
Пример:
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"video1" forKey:@"videoName"];
localNotif.userInfo = infoDict;
Убедитесь, что вы также запросить разрешение пользователя на использование местных уведомлений, в противном случае местное уведомление не будет срабатывать.
Пример:
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
Теперь вам нужно обрабатывать обжиг локального оповещения, когда приложение находится в 3-х государств: на переднем плане, фон/приостанавливалось и не работает.
Приложение работает на переднем плане . Местное уведомление срабатывает в тот момент, когда вы его установили. Следующий метод делегата будет вызвана системой в AppDelegate
:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
NSString *videoName = [notification.userInfo objectForKey:@"videoName"];
//do something, probably play your specific video
}
приложение работает в фоновом режиме или подвешен. Местное уведомление отображается пользователю (оно запускается на дату, когда вы его установили) , и пользователь нажимает на него. Тот же метод делегата, как указано выше (didReceiveLocalNotification
) будет вызвана системой в AppDelegate
:
приложение не работает, локальное уведомление показывается пользователю (он уволен на дату вы установите его) и пользователь нажимает на него. Следующий метод делегата будет вызвана системой в AppDelegate
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotif)
{
//the app was launched by tapping on a local notification
NSString *videoName = [localNotif.userInfo objectForKey:@"videoName"];
// play your specific video
} else {
// the app wasn't launched by tapping on a local notification
// do your regular stuff here
}
}
Я рекомендую прочитать Apple's documentation о работе с местными уведомлений.
Вы можете использовать фреймворк Media Player, как это рекомендовано в ответ Глорфинделя и вы можете найти пример для воспроизведения видео в этом StackOverflow answer.
Большое спасибо @Alex –