Отслеживать время, проведенное в приложении - PullRequest
5 голосов
/ 20 июля 2011

Что я должен использовать, чтобы отслеживать, как долго пользователь использует мое приложение на устройствах iOS?

Я думаю, что могу сделать это так:

  1. Время входа в систему при запуске приложения (application:didFinishLaunchingWithOptions:)
  2. Время входа в приложение заканчивается (applicationWillTerminate:)
  3. Элемент списка

Отправка отчета (пары времени начала / выхода) на сервер и подсчет времени, проведенного в приложении

У вас есть идеи получше?

Важно, чтобы сеть и ресурсы были эффективными
(не отправлять большие объемы данных и не использовать ресурсы iOS для сложных вычислительных операций.)

Ответы [ 5 ]

7 голосов
/ 20 июля 2011

Обратите внимание, что applicationWillTerminate: не обязательно вызывается при нажатии кнопки home (это изменилось с iOS 3.X на iOS 4.0).

Взгляните на applicationDidEnterBackground: и applicationWillEnterForeground:

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

1 голос
/ 20 июля 2011
  1. Время входа в систему при запуске приложения (didFinishLaunchingWithOptions)
  2. отправка отчета часто с интервалом в 5 минут.
  3. отправка отчета в applicationWillEnterbackground. (Таймер паузы (недействителен), если вы используете для него фоновый поток). Потому что если пользователь входит в другое приложение, он может закрыть приложение, просто нажав кнопку «Домой» и кнопку «минус» в диспетчере приложений. поэтому вы также должны отправить отчет здесь
  4. возобновить таймер с предыдущим временем в приложенииWillEnterForeground.
  5. Время входа в приложение заканчивается (applicationWillTerminate)
  6. Отправка отчета (пары времени начала / выхода) на сервер и подсчет времени, проведенного в приложении
1 голос
/ 20 июля 2011

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

1 голос
/ 20 июля 2011

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

1 голос
/ 20 июля 2011

Я считаю, что рассчитывать время на самом устройстве было бы лучше, учитывая, что вы хотите, чтобы это было эффективным по сети и ресурсам. Вычисление endTime - starTime будет очень очень быстрым (в зависимости от вашего времени реализации), и тогда вам нужно будет только отправить один фрагмент данных (время, которое потребовалось) по сети, а не два (время начала и окончания) .

Надеюсь, это поможет! N.S.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...