如何开始在iPhone的锁定屏幕播放音乐

Arc*_*ive 4 iphone objective-c ios

UILocalNotification用来提醒用户,如果应用程序没有运行,MPMusicPlayerController播放iPod音乐和MPMoviePlayerController播放无线电流网址.

根据Apple文档:如果iPhone被锁定而设备接收到本地通知,那么它将播放30秒的声音,当用户滑动滑块时,它将占用应用程序前景并发生两种情况

  1. 如果App没有运行则调用方法

    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  2. 如果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它将解决您的问题,在设备锁定时播放歌曲.