Я пытаюсь определить осуществимость определенных функций, необходимых в (потенциальном) проекте. Я (пока) не ищу практические рекомендации, просто могу. Я прошу прощения за любую неопределенность и невежество: первый из-за NDA, который делает Apple NDA похожим на GPL, а второй из-за того, что у меня нет опыта iPhone или MAC.
У меня есть четкое понимание Objective-C и конструктора интерфейса (возвращаясь к NextStep) и некоторый опыт разработки PDA, поэтому я, вероятно, пойму ответы, даже если мои вопросы наивны. Я немного просмотрел, поэтому знаю некоторые модные слова.
Я не могу вдаваться в подробности о реальном проекте, но я привел неудачную аналогию.
- большое количество пользователей в одной комнате просят выполнить задачу (и) в приложении (скажем, загадку)
- они находятся под наблюдением, но монитор не может внимательно наблюдать за ними
- им не разрешается оставлять заявку до завершения.
- они не могут отправлять / получать телефонные звонки или сообщения во время выполнения задания.
- монитор получает уведомления о различных шагах во время выполнения задачи
- монитор получает уведомление о завершении задачи или выходе из приложения
- приложение отправляет сердцебиение, поэтому монитор также знает, пропал ли сигнал
- Джейлбрейк не вариант.
- Приложение также должно работать на iPod Touch.
То, что мне нужно сделать, это кажется мне рискованным
- можно ли отключить (или потребовать от пользователя выключить) телефон и смс, но при этом иметь возможность отправлять http на мой сервер
- могу ли я предотвратить отключение приложения (даже если, скажем, срабатывает приложение будильника или звонит телефон).
- Не пройдя предотвращение, могу ли я хотя бы обнаружить любое из этих событий и уведомить мой сервер.
- уведомление о сбое. Могу ли я записать событие для проверки монитором позже.
Пользователь будет знать (и фактически приветствует) эти ограничения. Это проблема доверия - пользователь не должен обращаться за помощью или использовать вспомогательное приложение для решения головоломки и хочет, чтобы монитор (и другие участники) знали , чего он не делал. Пользователь имеет возможность нажать на экран «ОК, я понимаю и одобряю» в начале, но не для каждого сообщения с сервером.
Приложение будет взаимодействовать только с центральным сервером (запущенным моей компанией) - монитор не сможет купить серверное программное обеспечение, а URL-адреса сервера не будут изменены пользователем (или монитором).
Эй! Это похоже на приложение для сдачи экзаменов. Не то, что я делаю, но это было бы круто!
РЕДАКТИРОВАТЬ -
Я изменил название и добавляю еще несколько частей к вопросу, частично основываясь на ответе mmc. Приложение может работать в автономном режиме, для которого необходимо выполнить следующие действия:
Таким образом, используя аналогию с экзаменом, пользовательский опыт в автономном режиме будет выглядеть примерно так
- Запустить приложение
- Загрузка приложений, вопросы теста, время начала регистрации и т. Д.
- Выключить телефон (если приложение не может сделать это самостоятельно)
- Отключить любое приложение, которое может прервать мое приложение (может ли приложение сделать это?)
- Возобновить и сдать тест
- Укажите выполненный тест (или завершите последнюю проблему).
- Включите телефон (если приложение не может) и перезапустите приложение (если необходимо).
- Приложение загружает результаты тестов и регистрирует любые прерывания.
Итак, вопрос становится
- Уверен ли я, что, по крайней мере, я могу записать любое прерывание, которое не могу предотвратить
- Могу ли я узнать причину прерывания (телефон ответил, сигнал тревоги активирован, пользователь активирован)?
- можно ли запретить пользователю изменять журнал
- можно ли узнать, какие другие приложения работают при запуске? (для защиты от демона, который иногда отображает подсказку или что-то в этом роде.
Я все еще хотел бы работать с загрузками в реальном времени, поэтому на ум приходят несколько других идей.
- Если я смогу надежно обнаружить и записать, что телефон или другое приложение использовалось, это почти так же хорошо, как и предотвращение.
- Может ли пользователь запретить звонок телефона, даже если он включен (например, переадресация вызова + звонок выключен)
- Может ли мое приложение знать, выключен ли звонок
- Тот же вопрос для смс сообщений
- Если я не могу заблокировать его, может ли пользователь просто игнорировать (беззвучный) вызов или сообщение и не покидать мое приложение. Будет ли мое приложение знать это?