gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:23:02 25 4
gpt4 key购买 nike

我正在使用 UILocalNotification 在应用未运行时提醒用户,使用 MPMusicPlayerController 播放 iPod 音乐,使用 MPMoviePlayerController 播放广播流 url。

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

  1. 如果应用程序没有运行则调用方法

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

  2. 如果 App 已经运行则调用方法 -

    (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notify

我可以用这些方法完成我的任务。

问题:我需要我的应用程序能够在 iPhone 锁定并且收到本地通知并且应用程序在前台运行时播放我的声音(它可能是 iPod 音乐或流 url 但不是本地通知声音 30 秒)。

引用应用:“Alarm Clock HD”和应用商店中也提供的其他应用以这种方式工作正常,但是当应用在后台运行时这些应用无法播放闹钟(我不明白为什么???)

我也试过how-to-prevent-iphone-from-deep-sleeping :

它通过定期播放无声音乐来防止 iPhone 深度 sleep ,但是如何通知应用程序已收到通知以便开始播放“实际音乐”?以及如何开始播放新音乐?

最佳答案

@manju 抱歉我来晚了,但这对你有用。

 selectedDate = [timePicker date];

是selectedDate日期对象,这时候你的通知就来了。
[NSDate date] 通过这个你可以找到当前时间。并通过以下方式找到不同的时间。

 NSTimeInterval timeDifference =  [ selectedDate timeIntervalSinceDate:[NSDate date]];   

现在,当您安排通知时,请编写此代码

 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 ");
}

别忘了在app.infolist中添加

UIApplication BackgroundMode Audio它将解决您的问题,在设备锁定时播放歌曲。

关于iphone - 如何在 iPhone 的锁定屏幕上开始播放音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com