iphone以编程方式重启

phi*_*ons 10 reboot objective-c jailbreak ios

我有代码

system("reboot") 
Run Code Online (Sandbox Code Playgroud)

reboot命令在终端中有效,但即使我以root身份运行应用程序,操作仍会被拒绝.有没有人找到任何有效的方法,或者可以解释一下SBSetting的重启,这让我很好奇?

小智 26

我终于找到了一种方法来以编程方式重新启动iOS设备而无需生根设备!!!! 重启iOS设备的命令行工具称为libimobiledevice:

http://krypted.com/mac-os-x/use-libimobiledevice-to-view-ios-logs/

真是太神奇了.我在安装时碰到的一个障碍是试图安装这条线:

brew install -v --devel --fresh automake autoconf libtool wget libimobiledevice
Run Code Online (Sandbox Code Playgroud)

但是,通过运行此行,我解决了安装问题:

brew install -v --fresh automake autoconf libtool wget libimobiledevice
Run Code Online (Sandbox Code Playgroud)

在那个问题之后,我按照其余的说明瞧!

大多数命令都可以在这个页面上找到:http: //krypted.com/uncategorized/command-line-ios-device-management/

重启iOS设备的魔术命令是:

idevicediagnostics restart
Run Code Online (Sandbox Code Playgroud)

这个工具真正令人惊奇的不仅是重启iOS设备,还使用以下命令将iOS设备日志输出到mac的终端应用程序:

idevicesyslog
Run Code Online (Sandbox Code Playgroud)


Nat*_*ate 9

我找到了一种方法来做到这一点,虽然它有点令人费解.问题是,即使您将应用程序设置为以root身份运行,当您system()拨打电话时,您显然仍然受限于用户移动权限.由于移动设备无法调用重启(成功),因此无效.

我解决这个问题的方法是利用SBSettings支持的新功能.SBSettings有一个运行的特权守护程序进程.它允许您通过简单地编写脚本(或其他可执行文件)并将其转储到适当的目录(/var/mobile/Library/SBSettings/Commands)中来插入您自己的命令.然后,重新启动sbsettingsd进程后,可以通过发布通知来运行脚本.如果您为脚本命名

com.mycompany.reboot
Run Code Online (Sandbox Code Playgroud)

然后从您的应用程序中,您可以执行此代码:

#import <notify.h>

notify_post("com.mycompany.reboot");
Run Code Online (Sandbox Code Playgroud)

然后,使com.mycompany.reboot成为一个简单的shell脚本,如下所示:

#!/bin/sh
reboot
Run Code Online (Sandbox Code Playgroud)

并确保在com.mycompany.reboot脚本上使用chmod 755.可以在此处找到此SBSettings命令功能的完整详细信息:

http://thebigboss.org/guides/sbsettings-toggle-spec (请参阅调用外部函数和脚本 ...)

无论如何,它确实需要你的应用程序依赖于SBSettings,但它是一个免费的应用程序,大多数用户可能想要它仍然拥有它.目前,它通过编程方式实现了重新启动(或任何其他需要root访问权限的目标)的目标notify_post().