越狱开发-创建真正的后台程序(Daemon Process)

在网上搜索了一下如何在IOS上面实现Daemon Process,只有chrisalvares的博客中有过详细的描述,但是其博客中描述的较为复杂,

参考stackoverflow中的一个问答:

http://stackoverflow.com/questions/13345686/ios-daemon-app-will-not-start-jailbreak-how-to-debug

 

综合上面的实现方案,下面给出本人的实现:

IOS Daemon的实现分为两个部分,一个是守护程序的可执行文件,一个是描述可执行文件的plist。

可执行文件可以使用XCode来编写,普通的命令行程序就可以了,下面是本人的实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#import <Foundation/Foundation.h>
#import "NetworkTools.h"
#import "TSLogger.h"
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!, %@",[NetworkTools ipAddr]);
         
        [[TSLogger shanreInstance] connect];
 
        NSTimer *timer = [NSTimer timerWithTimeInterval:5
                                                 target:[TSLogger shanreInstance]
                                               selector:@selector(beat:)
                                               userInfo:nil
                                                repeats:YES];
        [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
        [[NSRunLoop mainRunLoop] run];
        while (YES) {
            [[NSRunLoop mainRunLoop] runUntilDate:[NSDate distantFuture]];
        }
         
    }
    return 0;
}

 这里避免主线程结束,在runloop中添加了一个timer,这个timer什么事情也没有做,主要是避免runloop结束。

 上面的主程序中,就可以在主线程中异步执行一些事件,本人的代码中所做的事情是向服务器每隔2s发送一个数字,这个数字累加。

下面是累加的结果:

编写这个控制台程序的时候,注意需要将工程的CPU架构设置为armv7,armv7s,不然会遇到 bad cpu type的错误。

第二个部分是plist,plist中描述了守护程序的位置,已经启动的参数,然后将这个plist拷贝到/System/Library/LaunchDaemons/

下面是程序的plist:

 

参考资料:

http://blog.csdn.net/yiyaaixuexi/article/details/8293020

注:请不要利用上面博客中的代码、用于非法目的。博客中思路仅供学习研究IOS系统实现,提高IOS开发技能。

 
posted @   兜兜有糖的博客  阅读(4257)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
阅读排行:
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?
· 告别虚拟机!WSL2安装配置教程!!!
点击右上角即可分享
微信分享提示