• 越狱开发-创建真正的后台程序(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来编写,普通的命令行程序就可以了,下面是本人的实现代码:

    #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开发技能。

     
  • 相关阅读:
    css固定元素位置(fixed)
    【转】php 下载保存文件保存到本地的两种实现方法
    【转】关于URL编码/javascript/js url 编码/url的三个js编码函数
    IE6对png图片的处理
    用phpcms开发模块时中文乱码问题
    【转】MySQL数据类型和常用字段属性总结
    PHPCMS几个有用的全局函数
    PHPCMS系统常量
    PHPCMS系统使用的弹出窗口插件artDialog
    基础知识点(一)
  • 原文地址:https://www.cnblogs.com/doudouyoutang/p/4712331.html
Copyright © 2020-2023  润新知