2012-04-19 2 views
0

Сегодня я отправился на собеседование, я столкнулся с тремя вопросами сейчас. Надеюсь, я предоставил некоторые решения илиКак поймать кнопку питания и кнопку дома на iPhone?

Мышление. 1. когда пользователь нажимает кнопку «Главная», приложение не возвращается к основному интерфейсу или задерживает 5 секунд, чтобы вернуться назад

Основной интерфейс. 2. Когда экран черный, как экран автоматической активации (как нажать кнопку нажатия кнопки питания). 3.how прямого запуска мое приложение, когда iPhone является запуск

Мой английский очень плохо, я надеюсь, что каждый может понять, что я сказал above.Thank вы очень

+2

Откровенно говоря, не сразу отвечая «Вы не можете этого делать», в самом интервью вы, вероятно, уже показали интервьюера, что вы не сделали много развития iOS. Это вероятная причина, по которой они задают эти вопросы. – ceejayoz

ответ

4

Ни один из них не возможно на прошивкой устройства, если он не взломан.

+0

если это джейлбрейк, как я могу это достичь? –

1

При нажатии кнопки пользователь нажимает кнопку Home, приложение не вернуться в основной интерфейс или задержки 5 секунд, чтобы вернуться к

Вы не можете, если вы не хотите, чтобы ваше приложение в AppStore ... Единственное, что вы можете сделать - это запросить больше времени для сохранения ваших данных до того, как ваше приложение будет завершено, но опыт пользовательского интерфейса все равно будет таким же - iphone вернется к основному интерфейсу.

когда экран черный, как активировать экран активации (как нажать кнопку нажатия кнопки питания).

Невозможно.

3. Как прямой запуск моего приложения, когда iPhone является запуск

Я не думаю, что вы можете сделать это даже с отдельным API, и, конечно, с вашим приложением не принят в AppStore ,

2

Q1 и Q2: не возможно

Q3: Ближайший вы можете получить желаемое поведение является режим киоска (магазин демо) работы.

Подробнее здесь:

Lock-down iPhone/iPod/iPad so it can only run one app

Это не совсем то, что вы ищете - это ограничивает устройство использовать только определенное приложение - но мне известно, единственный способ для автоматического запуска приложения без фиксации устройства.

2

Я знаю, что этот вопрос старый, но для каждого вопроса здесь есть легкая работа, которая работает хотя бы на iOS 7+, хотя нет способа сделать вопрос 2 без использования частных API. Вы можете ответить на вопросы 1 и 3 с помощью публичных ответов API (хотя они, по общему признанию, взломаны)!

1. Когда пользователь нажимает кнопку «домой», как вы задерживаете 5 секунд, прежде чем вернуться на главный экран?

Ответ Оскара Гомеса был на месте.Хотя вы не можете отсрочить возврат пользовательского интерфейса на главный экран, не блокируя цикл запуска ядра (который вас отбросит из магазина приложений), вы можете использовать некоторые методы фонового процесса, если это необходимо, чтобы получить дополнительные 5 секунд, просто не с помощью интерфейса пользователя ,

2. Как вы улавливаете кнопку Power Button?

Это наверняка с использованием частного API, и в то время как вы можете НАВЕРНОЕ попасть в App Store, вы, вероятно, не будет длиться долго, как только Apple, получает ветер вы это делаете. Это также взлом. Вы не можете прослушивать напрямую кнопку питания, но вы можете прослушивать экран, включаемый или выключенный, или оба одновременно. Вот небольшой фрагмент кода, который я имею в Enterprise App:

Внутри UIAppDelegate

static int const DisplayOnOffObserver = 54321876; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    ... 
    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, &PLDisplayOnOff, CFSTR("com.apple.springboard.hasBlankedScreen"), NULL, 0); 
    ... 
    return YES; 
} 

static void PLDisplayOnOff(CFNotificationCenterRef center, void* observer, CFStringRef name, const void* object, CFDictionaryRef userInfo) { 
    ... 
    DO SOME MAGIC 
    ... 
} 

- (void)applicationWillTerminate:(UIApplication *)application { 
    ... 
    CFNotificationCenterRemoveEveryObserver(CFNotificationCenterGetDarwinNotifyCenter(), &DisplayOnOffObserver); 
    ... 
} 

Очевидно, что вы должны иметь приложение ВСЕГДА работает в фоновом режиме (который может получить сложно) или у вас есть (только это не сложно)

Первый шаг - прослушивание уведомления darwin для включения/выключения экрана. На втором этапе выполняется обратный вызов. Третий шаг - это остановка прослушивания вызова. ПРИМЕЧАНИЕ: DisplayOnOffObserver - это случайное число (не очень случайное в моем случае)

3. Как вы можете запускать приложение сразу после запуска iPhone?

Предполагая, что при прямом запуске вы подразумеваете запуск в фоновом режиме, на самом деле это поддерживается Apple. Вам сначала должны включить Фоновые Услуги для местоположения. Во-вторых, вы должны начать слушать significant location changes. Я не знаю, насколько хорошо это документировано, но как только iPhone загружается, он пытается получить его местоположение. Когда он делает это, это происходит от того, что у него нет места (что является значительным изменением). Ваше приложение запустится в фоновом режиме, который включает вызов приложения: метод didFinishLaunchingWithOptions:, где вы можете запросить больше времени и запустить другие процессы для постоянного запуска в фоновом режиме до тех пор, пока пользователь не ударит ваше приложение вручную. Если вы постоянно работаете в фоновом режиме, используя этот метод, у вас есть шанс отклонить Apple.

Надеюсь, что это кому-то поможет! Если кому-то нужна дополнительная информация, просто оставьте комментарий, и я обновлю свой ответ.

Смежные вопросы