在 iOS 中运行后台服务

Posted

技术标签:

【中文标题】在 iOS 中运行后台服务【英文标题】:Running Background Service in iOS 【发布时间】:2014-06-30 06:49:49 【问题描述】:

我是 ios 应用程序开发的新手。我想在 iOS 中创建一个后台服务。我还想提一下一天中的特定时间和间隔(每 2 小时)来调用服务(一种调用服务的警报)。当服务运行时,一些任务应该独立于应用程序的状态来执行,即应用程序可以处于活动或非活动状态。它的任何示例或实现的代码 sn-p 都将帮助我实现此功能。

【问题讨论】:

了解苹果文档中的 localNotification developer.apple.com/library/ios/documentation/… appcoda.com/ios-programming-local-notification-tutorial 【参考方案1】:

使用此代码

- (void)applicationWillEnterForeground:(UIApplication *)application


[Timer invalidate];
    Timer = nil;


- (void)applicationDidEnterBackground:(UIApplication *)application

    NSLog(@"Background process is Start(EnterBackground)!");
    __block UIBackgroundTaskIdentifier bgTask ;
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    ];
    Timer = [NSTimer scheduledTimerWithTimeInterval:120.0f target:self  selector:@selector(process)  userInfo:nil repeats:YES];

【讨论】:

你能解释一下这里的定时器是什么吗?它在代码中给出错误。 在.h文件中声明NSTimer *Timer; 非常感谢。这行得通!但这是在后台运行某些东西的正确方法吗? iOS 中有没有类似服务的东西? 是否可以提及某个特定时间,例如上午 11:00?

以上是关于在 iOS 中运行后台服务的主要内容,如果未能解决你的问题,请参考以下文章

在ios中编写后台服务

在 iOS 中运行后台服务

我可以完全在后台服务中运行 Android GeoFencing 吗?

在后台centos服务器中运行php脚本

如何在Android后台服务中运行cordova插件?

跟后台打印程序系统服务通讯时出现错误。请打开服务管理单元,确认后台打印程序服务是否在运行。