- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在寻找一种在 iPhone 上启动守护进程的方法,我通过学习 ants application 使用 Xcode 创建了一个小测试应用程序。的源代码,它告诉我应该使用 launchctl
但不幸的是它不起作用。
我已经使用 SSH 在我的 iPod Touch 上的 /Applications/
中安装了我的应用程序,然后我通过帐户 mobile
使用 SSH 启动它,我的日志是这样的:
Script started on Thu Feb 24 19:33:28 2011
bash-3.2$ ssh mobile@192.168.1.8
mobile@192.168.1.8's password:
iPod-van-Henri:~ mobile$ cd /Applications
iPod-van-Henri:/Applications mobile$ cd DaemonUtility.app/
iPod-van-Henri:/Applications/DaemonUtility.app mobile$ ./DaemonUtility
2011-02-24 19:35:08.022 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:09.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:10.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:11.021 DaemonUtility[1369:107] Read 0 bytes
Bug: launchctl.c:2367 (24307):13: (dbfd = open(g_job_overrides_db_path, O_RDONLY | O_EXLOCK | O_CREAT, S_IRUSR | S_IWUSR)) != -1
launchctl: CFURLWriteDataAndPropertiesToResource(/private/var/stash/Applications.pwn/DaemonUtility.app/com.developerief2.daemontest.plist) failed: -10
launch_msg(): Socket is not connected
2011-02-24 19:35:12.039 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:13.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:14.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:15.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:16.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:17.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:18.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:19.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:20.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:21.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:22.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:23.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:24.021 DaemonUtility[1369:107] Read 0 bytes
2011-02-24 19:35:25.021 DaemonUtility[1369:107] Read 0 bytes
^C
iPod-van-Henri:/Applications/DaemonUtility.app mobile$ exit
logout
Connection to 192.168.1.8 closed.
bash-3.2$ exit
exit
Script done on Thu Feb 24 19:34:49 2011
当我用 root
启动它时(用 su
执行),我让守护进程运行,但它什么也没做。
自启动以来,我的守护程序应每十秒显示一次 UIViewAlert
:
**main.m (Daemon)**
//
// main.m
// DaemonTest
//
// Created by ief2 on 23/02/11.
//
#import <UIKit/UIKit.h>
@interface DAAppDelegate : NSObject <UIApplicationDelegate> {
NSDate *_startupDate;
NSTimer *_messageTimer;
}
@property (nonatomic, retain) NSDate *startupDate;
@end
@interface DAAppDelegate (PrivateMethods)
- (void)showMessage:(NSTimer *)timer;
@end
@implementation DAAppDelegate
@synthesize startupDate=_startupDate;
- (void)dealloc {
[_startupDate dealloc];
[_messageTimer dealloc];
[super dealloc];
}
- (void)applicationDidFinishLaunching:(UIApplication *)theApplication {
UIAlertView *myView;
myView = [[UIAlertView alloc] initWithTitle:@"Daemon Launched"
message:@"The daemon was launched"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[myView show];
[myView release];
self.startupDate = [NSDate date];
NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:10
target:self
selector:@selector(showMessage:)
userInfo:nil
repeats:YES];
_messageTimer = [myTimer retain];
}
- (void)applicationWillTerminate:(UIApplication *)theApplication {
[_messageTimer invalidate];
UIAlertView *myView;
myView = [[UIAlertView alloc] initWithTitle:@"Daemon Terminated"
message:@"The daemon was terminated"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[myView show];
[myView release];
}
- (void)showMessage:(NSTimer *)timer {
NSTimeInterval mySec;
mySec = [self.startupDate timeIntervalSinceNow];
NSString *format = [NSString stringWithFormat:
@"The daemon has been running for %llu seconds",
(unsigned long long)mySec];
UIAlertView *myView;
myView = [[UIAlertView alloc] initWithTitle:@"Daemon Message"
message:format
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[myView show];
[myView release];
}
@end
int main(int argc, const char **argv) {
NSAutoreleasePool *mainPool = [[NSAutoreleasePool alloc] init];
UIApplicationMain(argc, (char **)argv, nil, @"DAAppDelegate");
[mainPool drain];
return 0;
}
完整的应用程序源代码可以在我的电脑上找到:
http://81.82.20.197/DaemonTest.zip
提前谢谢你,
IEF2
最佳答案
你太辛苦了。您需要做的就是创建一个包含应用程序标识符和路径的 .plist 文件,并将其添加到/System/Library/LaunchDaemon 文件夹中。然后确保您的应用位于/Applications 文件夹中。重新启动,每次启动手机时它都会工作。
谷歌“Chris Alvares daemon”并查看他的教程...
关于iphone - 为越狱的 iOS 制作守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109059/
我正在为 Cydia 做一个调整,我想在状态栏上添加一个图标。几个小时以来,我一直在通过 Google 搜索我能想到的每一个可能的短语,但似乎什么都没有。 我知道使用 Apple SDK 是不可能的,
我想覆盖静音开关以在开关切换时创建一个新 Action 。那么当开关改变时触发的方法是什么? 谢谢 最佳答案 在 SpringBoard 中 Hook 这个方法 SBMediaController -
如果我没记错的话(如果我错了,请纠正我),未越狱的 iPhone 提供了两个广泛的存储空间: 适用于应用(以及与应用捆绑的数据); 用于用户管理的文件。 据我所知,前者是 protected 存储,这
我编写了一个将数据从一个 i-Device 传输到另一个 i-Device 的代码,但是由于 Apple 提供了官方解锁设备,我想扩展解决方案以将数据从 i-Device 传输到另一个基于平台的设备。
我的应用程序(越狱的 iOS)是否有一种优雅的方式( Objective-C 或 C)来检查特定的动态库在 iOS 中是否可用,而不是使用 NSFileManager 检查实际的 dylib 文件是否
是否可以使用 Objective-C 在越狱的 iOS 中以编程方式开始和结束调用?我知道使用非越狱设备是不可能的(尤其是调用结束),但我要求越狱版本。 最佳答案 开始通话使用 [[UIApplica
在越狱的 iOS 设备上,一个应用程序是否可以调用另一个应用程序的方法(实例方法,而不是静态方法)?另一种表达方式:如何获取应用程序的实例(假设应用程序正在运行)以便我可以调用它的方法之一? 背景:我
我很清楚使用私有(private) API 访问网络信息会导致您的应用被拒绝。 但是,假设我有一个越狱设备,是否可以通过编程在两个 WiFi 网络之间切换? 最佳答案 你将不得不使用 MobileAp
我正在开发一个简单的工具,请求设备从命令行解锁。但是,使用下面的这些代码,似乎没有发生任何事情(使用 Cycript 验证 sharedInstance 代码是否正确,并且设备确实收到了解锁请求) #
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwa
无法让我的 Javascript 正确显示我的 HTML 锁屏上的时间。 我一直在研究其他几个,他们没有使用 document.write() 而是使用 document.getElementById
我想模拟点击越狱 iPhone 主屏幕上的应用程序图标。我使用了下面的代码,但是无法生效。我做错了什么吗? getFrontMostAppPort() 的方法对吗?如果我尝试使用 GSSendSyst
如何在越狱的 iOS 6.x 设备上检索应用程序的作者(或开发者或发布者等)?在 iOS 4.x 和 5.x 中,SBApplication 类中有一个 author 成员。但是在 iOS 6.1 中
在iOS7之前,我使用UIGetScreenImage()函数来轻松截取屏幕截图,但在iOS7中,它已被弃用,现在有什么好的方法可以存档吗?谢谢! 补充:我需要在任意 View 截取整个屏幕 最佳答案
我有我的 iOS 应用程序(具有合法配置的标准应用程序)。它从网络获取有关电话号码的信息并显示给用户。应用程序可以与网络一起工作,有存储空间,而且非常聪明:)。 此外,我对 InCallService
我想以root身份运行应用程序 稍后,我通过一个间接脚本运行该应用程序,并使用 6755 权限设置运行该应用程序,该部分有效并运行该应用程序。 MyApp.app/MyApp MyApp.app/My
我正在为越狱的 iPhone 开发一个 iOS 应用程序。作为启动守护进程,它需要在手机启动时运行。所以这就是问题所在,下载包时,守护程序的 plist 已放置在/System/Library/Lau
有一个很好的开源库,它使用 Apple 的私有(private)框架将音频文件添加到越狱的 iOS 设备上的 iTunes 库中,libipodimport .它缺少的是在添加音乐文件时也可以添加艺术
我有问题。我需要为 越狱 iOS 解决这个问题。我的应用程序在后台模式下工作。我希望该应用程序在某些事件后从后台进入前台模式。我尝试了下一条指令: system([[NSString stringWi
我正在为越狱的 iPhone 构建一个守护程序应用程序,并遵循了 stackoverflow 上的几个问题和答案中描述的指南,当然还有 Chris Alvares 的网页 http://chrisal
我是一名优秀的程序员,十分优秀!