2013-05-10 1 views
2

Я создал приложение iOS с тремя потоками с поддержкой Sphero. Я закончил переписывать setupRobotConnection и handleRobot онлайн в каждом представленииDidLoad, затем закрывая соединение в каждом методе prepareForSegue. Он работает по большей части, но кнопка «Назад» NavigationController может повредить все. Я думаю, что это не лучший способ подключиться к Sphero и поддерживать соединение.Sphero Connection: Должен ли я вызвать setupRobotConnection и handleRobotOnline в каждом UIViewController или только один раз для каждого приложения?

Для моего приложения, каждый поток был немного отличается handleRobotOnline потребности Flow 1: Нет вождения, необходимо dataStreaming и AsyncData Flow 2: классы Мультиплеер для отправки команд. Flow 3: Джойстик вождение с 1 точки зрения, что требуется dataStreaming и AsyncData

Моего вопроса: для нескольких проекций приложения а, где лучшее место для: 1) Подписаться на уведомления приложений? 2) Подпишитесь на уведомления о роботе в режиме онлайн/офлайн? 3) Проверьте, имеет ли приложение подходящий тип подключения к роботу (driveControl, sharedMultiplayer, dataStreaming)?

я могу вставить код, если необходимо

ответ

3

Лучше управлять подключением к SPHERO и открыть/закрыть его в одном месте. Я считаю, что это проще всего сделать в AppDelegate или RootViewController.

Для AppDelegate:

  • Открытое соединение на applicationDidBecomeActive и applicationWillEnterForeground
  • Закрыть соединение на applicationWillResignActive и applicationWillTerminate
  • Регистрация для роботов государственных уведомлений в didFinishLaunchingWithOptions приложений

Если вы хотите управлять соединение в вашем RootViewController, зарегистрируйтесь для уведомления о роботе катионы при загрузке, а также те же уведомления о состоянии приложения, о которых говорилось выше, и выполняют ту же обработку соединения.

При подключении в AppDelegate/RootViewController вы можете разрешить другим вашим ViewControllers не заботиться о связи с этим соединением. Вы можете либо предположить, что Sphero подключен, если у вас есть логика, чтобы уведомить пользователя в AppDelegate/RootViewController или вы можете разделить это состояние.

Что касается конкретных случаев использования, о которых вы упомянули, я бы порекомендовал следующее: 1. Добавьте наблюдателя передачи данных и ответа на viewDidLoad, вы также должны включить поток данных. Удалите наблюдателей в viewDidUnload и отключите передачу данных. 2. Используйте классы многопользовательской игры здесь, как обычно. 3. Добавьте наблюдателя потока данных и наблюдателя ответа в viewDidLoad, вы также должны включить поток данных. Удалите наблюдателей в viewDidUnload и отключите передачу данных. Обычно отправляйте команды ручного джойстика.

Если вы хотите получить информацию о состоянии подключения к роботу, вы можете зарегистрировать/отменить регистрацию уведомлений о подключении в каждом представлении viewDidLoad/viewDidUnload.

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

  • Нет связанных вопросов^_^