Я знаю, что этот вопрос старый, но для каждого вопроса здесь есть легкая работа, которая работает хотя бы на 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.
Надеюсь, что это кому-то поможет! Если кому-то нужна дополнительная информация, просто оставьте комментарий, и я обновлю свой ответ.
Откровенно говоря, не сразу отвечая «Вы не можете этого делать», в самом интервью вы, вероятно, уже показали интервьюера, что вы не сделали много развития iOS. Это вероятная причина, по которой они задают эти вопросы. – ceejayoz