Перезагрузка iphone программно

У меня есть код

system("reboot") 

reboot Команда работает в терминале, но даже если я запускаю приложение от имени пользователя root, операция все равно будет отклонена. Кто-нибудь нашел какой-нибудь способ, который работает, или может немного рассказать о перезагрузке SBSetting, что вызывает у меня любопытство?

5 ответов

Решение

Я нашел способ сделать это, хотя это немного запутанно. Проблема в том, что даже если вы настроите ваше приложение для запуска с правами root, при system() звонки, вы, очевидно, все еще ограничены пользовательскими мобильными привилегиями. Поскольку мобильный телефон не может вызвать перезагрузку (успешно), это не работает.

Чтобы обойти эту проблему, я воспользуюсь новой функцией, которую поддерживает SBSettings. SBSettings имеет привилегированный процесс демона, который выполняется. Он позволяет вам подключать свои собственные команды, просто написав скрипт (или другой исполняемый файл) и поместив его в соответствующий каталог (/var/mobile/Library/SBSettings/Commands). После того, как вы перезапустите процесс sbsettingsd, вы можете запустить его в своем скрипте, отправив уведомление. Если вы назовете свой сценарий

com.mycompany.reboot

затем из вашего приложения вы можете выполнить этот код:

#import <notify.h>

notify_post("com.mycompany.reboot");

Затем вы делаете com.mycompany.reboot простым сценарием оболочки следующим образом:

#!/bin/sh
reboot

И убедитесь, что chmod 755 используется в вашем скрипте com.mycompany.reboot. Полную информацию об этой функции команды SBSettings можно найти здесь:

http://thebigboss.org/guides/sbsettings-toggle-spec (см. Вызов внешних функций и скриптов...)

В любом случае, оно требует, чтобы ваше приложение зависело от SBSettings, но это бесплатное приложение, и большинство пользователей, вероятно, все равно захотят его иметь. На данный момент он выполняет задачу перезагрузки (или чего-либо еще, что требует root-доступа) программно, через notify_post(),

Я наконец нашел способ программно перезапустить устройство 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

Однако я справился с проблемой установки, запустив эту строку:

brew install -v --fresh automake autoconf libtool wget libimobiledevice

После этой проблемы я следовал остальным инструкциям и вуаля!

Большинство команд можно найти на этой странице: http://krypted.com/uncategorized/command-line-ios-device-management/

Волшебная команда, которая перезапускает устройство iOS:

idevicediagnostics restart

Что действительно удивительно в этом инструменте, так это не только перезапуск устройства iOS, но и вывод журналов устройств iOS в приложение терминала Mac с помощью следующей команды:

idevicesyslog

Этот ответ может показаться кому-то неприятным, но я не нашел лучшего решения о том, как перезапустить устройство iOS, которое не было взломано, поэтому вот мой ответ:

Чтобы перезапустить устройство из командной строки, я делаю некоторые подготовительные работы:

  • Подключите устройство к компьютеру
  • Добавьте ярлык iTunes в свой док
  • Выберите прожектор и найдите приложение под названием Automator [для запуска Automator должен быть установлен Xcode!]
  • Когда Automator запускается, выберите опцию приложения
  • Нажмите кнопку записи, чтобы начать запись следующих действий
  • Выберите ярлык iTunes
  • Выберите ваше устройство из настроек устройства
  • Нажмите кнопку Восстановить резервную копию...
  • Нажмите кнопку Восстановить
  • Нажмите кнопку остановки в приложении Automator, чтобы остановить запись.
  • В приложении Automator выберите "Файл" в верхней панели и сохраните только что записанное приложение в выбранном вами месте.

На данный момент у вас есть файл приложения, который будет выполнять шаги, упомянутые выше. Я склонен оставлять iTunes открытым, так как устройство iOS всегда будет подключено и готово к доступу. Когда iTunes закрывается и перезапускается, устройству требуется время, чтобы полностью подключиться к iTunes, что приводит к нарушению работы приложения Automator.

В этот момент я могу зайти в терминал, перейти к расположению файла приложения и выполнить следующую команду [ПРИМЕР]:

откройте automator.app (замените "automator.app" именем вашего файла)

Если вы похожи на меня и выполняете эту команду в jenkins, вам нужно будет выполнить следующие команды:

  1. открыть [location]/[your_app_name.app]
  2. спать 30

По какой-то причине приложению automator требуется время ожидания для завершения всех записанных действий.

Кроме того, я уверен, что вы также можете написать яблочный скрипт, чтобы сделать все это, но я ненавижу яблочный скрипт и выбрал легкий путь!

Это невозможно, если приложение работает в своей песочнице. на взломанном телефоне вы можете выполнить команду reboot shell.

Другие вопросы по тегам