gpt4 book ai didi

ios - 后台运行3分钟后闹钟不响

转载 作者:行者123 更新时间:2023-11-29 10:43:35 24 4
gpt4 key购买 nike

我正在开发一个警报应用程序。过去两周我遇到了一个问题。我的问题是:我的应用程序在后台运行。我第一次安装应用程序并设置闹钟并关闭应用程序。如果报警时间距离当前时间超过 3 分钟,则其不响意味着 3 分钟后报警在后台进程中不响。如果应用程序打开,则闹钟正在工作。

这是我的代码:

   self->bgTask = 0;
NSAssert(self->bgTask == UIBackgroundTaskInvalid, nil);

bgTask = [application beginBackgroundTaskWithExpirationHandler: ^
{
NSLog(@"beginBackgroundTaskWithExpirat");
dispatch_async(dispatch_get_main_queue(), ^
{
NSLog(@"dispatch_async");
[application endBackgroundTask:self->bgTask];
self->bgTask = UIBackgroundTaskInvalid;
});
}];

dispatch_async(dispatch_get_main_queue(), ^
{
NSLog(@"dispatch_get_main_queue");
//Start BG Timer
[self Start_Update_Timer];
self->bgTask = UIBackgroundTaskInvalid;
});

// This is my timer for background running ..
-(void) Start_Update_Timer
{
//If timer is already running, stop the timer
if(self.callTimer)
{
[self.callTimer invalidate];
self.callTimer=nil;
}

//call the timer for every one sec
self.callTimer =[NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(update_Alarm_List) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.callTimer forMode:NSRunLoopCommonModes];
}

最佳答案

因为应用程序不应该像这样工作。如果您希望您的应用程序在后台持续播放声音,则应将其注册为专门执行此操作的应用程序。就像一个音乐播放器。如果您的应用仅提供警报,那么您必须使用本地通知来“触发”来自您应用的声音。通知可以播放 30 秒的声音,并以特定的时间间隔再次播放。您的应用程序将在 3 分钟后停止播放,因为您的“后台”执行时间已过。那是苹果让你的应用程序在后台运行以在用户关闭你的应用程序后做你必须做的任何事情的时间。

这适用于您希望在后台继续播放声音的情况。请注意,如果播放停止,您的应用程序将停止。

https://developer.apple.com/library/ios/qa/qa1668/_index.html#//apple_ref/doc/uid/DTS40010209

如果您想使用带声音的通知(最多 30 秒),请参阅此处:

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html

关于ios - 后台运行3分钟后闹钟不响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23264500/

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