Arc*_*ive 4 iphone objective-c ios
我UILocalNotification用来提醒用户,如果应用程序没有运行,MPMusicPlayerController播放iPod音乐和MPMoviePlayerController播放无线电流网址.
根据Apple文档:如果iPhone被锁定而设备接收到本地通知,那么它将播放30秒的声音,当用户滑动滑块时,它将占用应用程序前景并发生两种情况
如果App没有运行则调用方法
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
如果App已经运行,则调用方法 -
(void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notify
我可以用这些方法完成我的任务.
问题:当iPhone被锁定并收到本地通知且应用程序在前台运行时,我需要我的应用程序能够播放我的声音(可能是iPod音乐或流媒体网址,但不是本地通知声音,持续30秒).
参考应用程序:"闹钟高清"和应用程序商店中也可用的其他应用程序正常工作,但这些应用程序在后台运行时无法播放警报(我无法理解为什么???)
我还尝试了 如何防止iphone从深度睡眠:
通过定期播放无声音乐来防止iPhone深度睡眠,但如何通知应用通知已收到,所以开始播放"实际音乐"?以及如何开始播放新音乐?
小智 5
@manju对不起,我迟到了,但它适合你.
selectedDate = [timePicker date];
Run Code Online (Sandbox Code Playgroud)
它是选择日期对象,此时您的通知将会到来.
[NSDate date]通过这个你可以找到当前时间.并找到不同的时间通过.
NSTimeInterval timeDifference = [ selectedDate timeIntervalSinceDate:[NSDate date]];
Run Code Online (Sandbox Code Playgroud)
现在,当您安排通知时,请写入此代码
UIApplication *app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier bgTask = 0;
NSTimer *backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:timeDifference target:self selector:@selector(backgroundTask) userInfo:nil repeats:NO];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
-(void)backgroundTask
{
NSLog(@"Here you can play song via player ");
}
Run Code Online (Sandbox Code Playgroud)
别忘了在app.infolist中添加
UIApplication BackgroundMode Audio它将解决您的问题,在设备锁定时播放歌曲.
| 归档时间: |
|
| 查看次数: |
3106 次 |
| 最近记录: |