我们距离将第一个应用程序提交到appstore还有几天的时间,昨晚我听到它在越狱设备上无法使用时感到震惊.我有几秒钟的设备,看到操作系统版本,并提供可用内存(36MB,我想这是低).
我应该关心吗?
据推测,越狱用户可以购买应用程序并撰写严厉的评论.如果是这样且越狱的iPhone很常见,那么iPhoneJB就成了我不得不支持的事实上的影子平台.
编辑
我得到了一些球场数据,听起来我应该关心新的事实上的影子平台.所以要么我可以尝试减少内存需求并交叉我的手指,或者拿出信用卡然后让我再用iPhone来越狱.
我有兴趣了解当iPhone被越狱时应用程序可以访问的其他功能和API.有人能为我提供一些基本资源来了解这一点吗?我最感兴趣的是:
建议表示赞赏.
我有代码
system("reboot")
Run Code Online (Sandbox Code Playgroud)
该reboot命令在终端中有效,但即使我以root身份运行应用程序,操作仍会被拒绝.有没有人找到任何有效的方法,或者可以解释一下SBSetting的重启,这让我很好奇?
我正在开发一个在后台作为服务运行的网络监视器应用程序.屏幕打开或关闭时是否可以收到通知/电话?
它通过使用以下代码存在于Android中:
private void registerScreenOnOffReceiver()
{
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(screenOnOffReceiver, filter);
}
Run Code Online (Sandbox Code Playgroud)
然后在打开/关闭屏幕时调用screenOnOffReceiver.iOS有类似的解决方案吗?
编辑: 到目前为止我发现的最好的是UIApplicationProtectedDataWillBecomeUnavailable(检测iPhone屏幕是否打开/关闭),但它要求用户在设备上启用数据保护(密码保护).
我希望能够以编程方式设置锁屏背景图像.我知道这只适用于越狱的iOS设备.
以下是我尝试过的一些事情:
将LockBackground.png放在/ private/var/mobile/Library/SpringBoard /中.这可行,但需要一个坚硬的呼吸.notify_post("com.apple.language.changed");不适用于柔软的呼吸.
用class-dump倾倒的UIKit的私有方法.4.2中的UIKit曾经有一个被调用的方法,+ (void)setDesktopImageData:(id)fp8;但它似乎在4.3及以上版本中缺失.
有什么我想念的吗?
我正在尝试确定我的sqlite访问数据库是否在iOS上是线程安全的.我正在编写一个非App Store应用程序(或可能是一个启动守护程序),因此Apple的批准不是问题.有问题的数据库是内置的sms.db,因此操作系统也可以访问此数据库进行读写.我只想安全地阅读它.
我已经阅读过有关使用sqlite从多个进程读取的内容:
多个进程可以同时打开同一个数据库.多个进程可以同时执行SELECT.但是,只有一个进程可以随时对数据库进行更改.
我知道线程安全性可以用sqlite编译,并且sqlite3_threadsafe()可以用来测试它.在iOS 5.0.1上运行此功能
int safe = sqlite3_threadsafe();
Run Code Online (Sandbox Code Playgroud)
产生的2的结果 根据本,这意味着互斥锁定是可用的.但是,这并不一定意味着它正在使用中.
我不清楚是否在每个连接,每个数据库或全局基础上动态启用了线程安全性.
我也读过这个.它看起来sqlite3_config()可用于启用安全的多线程,但当然,我无法控制或了解操作系统本身可能如何使用此调用(我吗?).如果我在我的应用程序中再次进行该调用,是否可以安全地读取数据库,或者它是否只会对我的应用程序中使用相同sqlite3数据库句柄的多个线程的并发访问产生冲突?
无论如何,我的问题是......
我可以安全地读取iOS也可以访问的这个数据库,如果是这样,怎么样?
这可能是一个失败的原因,但我会问,因为我老实说只是好奇......
我们有一个客户想要为OS X创建替代消息应用程序.他们基本上想要使用相同的帐户,聊天记录和所有内容,但为内置消息提供完全不同的UI(对于有特定残疾的人) .应用程序.鉴于Messages.app,iMessage中的主要服务完全没有记录,因此创建他们自己的消息传递应用程序是不会飞的,所以支持使用第三方代码几乎是不可能的.
经过初步研究,显而易见的是,有文档记录的AppleScript方法将提供一个可行但粗略的解决方案,缺少原始应用程序的许多功能(例如打字时的指示等),更不用说它需要保留原始正在运行的消息应用程序会分散用户的注意力
那时我们开始深入挖掘并找到了IMCore.framework.IMCore基本上是Messages.app用来与各种服务进行通信的,它的引擎就是imagent管理数据,实际上与各种IM服务器进行通信.IMCore是一个私有框架,显然使用起来有些风险(并自动从App Store中排除他们的应用程序),但我们的假设是,对于OS X,我们仍然应该能够实现这一点并将应用程序分发到App Store之外而不是很难.
我们开始尝试IMCore(同时逆向工程Messages.app以查看它是如何使用的),并取得了一些进展.我们能够成功连接到imagent进程并执行多个配置操作,但后来发现数据模型基本上是空的 - 我们无法看到任何用户的数据或与任何IM服务通信,即使我们'在用户的安全上下文中重新运行.
然后我们注意到Messages.app有一些非常奇怪的未记录的权利,例如com.apple.private.imcore.imdpersistence.database-access和com.apple.imagent.在这一点上,我们假设这些权利是我们为了成功沟通而缺少的权利imagent.我们已经尝试将这些权利添加到我们自己的应用程序中,并且能够成功构建并对其进行编码,但是当程序启动时,它会在启动时因系统消息而崩溃EXC_CRASH (Code Signature Invalid)(Xcode说Terminated due to code signing error).
我们可怕的假设是Apple锁定了他们的私有权利,这样系统就不会接受使用它们的二进制文件,除非它是由Apple直接签名的,但这显然是一种理论.另一个问题是,如何imagent知道我们的二元是否具有这些权利?我们不能以某种方式欺骗这些权利吗?
正如我所说,感觉就像一个失败的原因,但谁知道.我猜猜在iOS上做过铁杆越狱工作的人可能会有一两个想法 - 任何人?
我们如何获取/转储iOS 9的servicebundle头文件(尤其是IncomingCall.servicebundle头文件)?
针对较旧的iOS版本发布了IncomingCall.servicebundle标头(例如https://github.com/justzt/iPhone-IncomingCall.servicebundle-headers).
我正在尝试一段时间来为iOS 9找到或转储它们但没有运气.classdump-dyld工具(如http://iphonedevwiki.net/index.php/Reverse_Engineering_Tools#class-dump.2C_class_dump_z.2C_classdump-dyld中所述)无法转储我的dyld库,因为它"不合适的图像: dyld_shared_cache_arm64" .
我知道听起来这个问题有一个简单的答案,但是听我说.虽然UIStatusBar是子类UIView,但您不能使用该addSubview方法向其添加子视图,因为它不使用它.同样的道理UIStatusBarWindow.视图或窗口都没有viewcontroller,所以我无法以任何方式挂钩.
这是相关的代码部分.我在自己上调用addSubviews方法的行是问题,因为addSubviews它不是一种方法UIStatusBar.
#import <CoreGraphics/CoreGraphics.h>
@interface UIStatusBar : UIView
@end
%hook UIStatusBar
- (void)layoutSubviews {
//Round corners under status bar
CGFloat radius = 15;
CGRect wholeScreen = [[UIScreen mainScreen] bounds];
UIView *roundedCorners = [[UIView alloc] initWithFrame: CGRectMake(-radius, 20-radius, wholeScreen.size.width+2*radius, wholeScreen.size.height-20+2*radius)];
roundedCorners.layer.borderWidth = radius;
roundedCorners.layer.cornerRadius = 2*radius;
roundedCorners.layer.borderColor = UIColor.blackColor.CGColor;
roundedCorners.userInteractionEnabled = NO;
[self addSubView:roundedCorners];
}
%end
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以添加子视图吗?我试图这样做的原因是,只要状态栏被隐藏,我的roundedCorners视图也会被隐藏.每当状态栏被隐藏时我都可以隐藏它,但是由于不同的应用程序使用了许多不同的隐藏状态栏的方法,这些方法并不像我希望的那样有效.
我今天收到了Crashlytics的崩溃报告,无法弄清问题是什么.我的应用程序已经存在了几个月没有问题,所以这似乎是一次性的.
崩溃是 Exception Type EXC_BREAKPOINT Code UNKNOWN at 0xdefe
1 UIKit _shadowImageInRectForSlice + 258
2 UIKit _shadowImageInRectForSlice + 258
3 UIKit -[UIActionSheet(Private) layout] + 3586
4 UIKit -[UIActionSheet(Private) presentSheetInView:] + 268
5 myapp GraphViewController.m line 135
-[GraphViewController graphButtonPressed:] + 135
6 UIKit -[UIApplication sendAction:to:from:forEvent:] + 72
7 UIKit -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 120
8 UIKit -[UIApplication sendAction:to:from:forEvent:] + 72
9 UIKit -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30
10 UIKit -[UIControl sendAction:to:forEvent:] + 44
11 UIKit -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 502
12 UIKit -[UIControl touchesEnded:withEvent:] …Run Code Online (Sandbox Code Playgroud) jailbreak ×10
ios ×9
iphone ×5
objective-c ×4
broadcast ×1
crash ×1
hackintosh ×1
lockscreen ×1
logos ×1
macos ×1
reboot ×1
sdk ×1
sqlite ×1
theos ×1
uikit ×1