2016-02-19 2 views
1

Я делаю приложение, в котором пользователь выбирает время и видео. При уведомлении о пожаре, чем я хочу, чтобы выбранное видео было воспроизведено. Как я могу это достичь? Вот мой код уведомления.
Воспроизведение видео Когда уведомление пожара

-(void) scheduleLocalNotificationWithDate:(NSDate *)fireDate 
{ 

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

    localNotif.fireDate = fireDate; 
    localNotif.timeZone = [NSTimeZone localTimeZone]; 
    localNotif.alertBody = @"Time to wake Up"; 
    localNotif.alertAction = @"Show me"; 
    localNotif.soundName = @"Tick-tock-sound.mp3"; 
    localNotif.applicationIconBadgeNumber = 1; 
    localNotif.repeatInterval = NSCalendarUnitDay; 
    NSLog(@" date %lu",kCFCalendarUnitDay); 
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
} 

Любой Syggestion?

ответ

1

Ваш код для планирования локального уведомления выглядит хорошо. Вероятно, вы также должны добавить некоторые данные в свойстве 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.

+0

Большое спасибо @Alex –

0

После того, как пользователь откроет ваше местное уведомление, ваше приложение будет запущено, и будет вызываться - application:didFinishLaunchingWithOptions: вашего UIApplicationDelegate. Словарь опций будет содержать ключ UIApplicationLaunchOptionsLocalNotificationKey, который содержит UILocalNotification. Это должно дать вам достаточно информации, чтобы определить, какое видео нужно воспроизводить, что вы можете сделать с помощью Media Player framework.

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