2012-06-25 4 views
1

Я рассматриваю возможность использования API для создания базы данных на моем сервере, чтобы определить, какой процент пользователей каждого из моих приложений запускает версию iOS (чтобы помочь мне создать решение о минимальной поддерживаемой версии iOS для будущего развития).CFUUIDCreate, статистика использования версий iOS и разрешение пользователя

Мой вопрос: Должен ли я попросить у пользователя разрешения отправить IOS версии пара (анонимным) UUID/данных к серверу, или это ОК, чтобы сделать это автоматически?

Я спрашиваю, потому что я мог бы поспорить на безопасную сторону и спросить в любом случае, но большинство пользователей будут чувствовать себя запуганными техническими деталями и, скорее всего, снизятся. Кроме того, чем длиннее текст в UIAlertView, тем вероятнее, что пользователь не прочитает его.

Будет ли Apple отклонять мое приложение, если я не спрошу? Даже если они этого не делают, вы думаете, что я всегда должен просить у пользователя разрешения на отправку этого анонимных данных?

Что нового в этой реализации?

+1

Вы можете сделать это автоматически, Apple не откажется от этого. Если вы хотите, чтобы пользователь знал об этом, вы можете добавить это в условия и условия приложения. Я также реализовал это в своем приложении. – rishi

+0

Отлично. Я полагаю, ваше приложение было одобрено. Идея «Положения и условия» блестящая! –

+0

да ... мое приложение было одобрено и в магазине приложений за последние 6 месяцев. – rishi

ответ

2

ОК, это то, что я собираюсь сделать, исходя из ответа Николая Рухе, но улучшившись на ловушке, которую я только что обнаружил.

Предположим, что пользователь John Doe установил мое приложение на своем iPhone под управлением iOS 5.0.

При первом запуске приложение отправляет анонимный запрос на мой сервер, который эффективно увеличивает на один счетчик для «Устройства, работающие под управлением iOS 5.0». Приложение записывает это событие и версию iOS (в пользовательских настройках по умолчанию или в цепочку ключей) и не отправляет никаких дополнительных запросов до тех пор, пока локально сохраненная строка версии ОС и текущая (возвращенная системой) равны.

На следующей неделе Джон обновляется до iOS 5.1 и запускает мое приложение. Приложение обнаруживает несоответствие версии ОС и отправляет новый запрос на мой сервер.

Но если это только добавляет одно устройство в число «iOS 5.1», iPhone iPhone iPhone теперь подсчитывается дважды: один раз «Устройства, работающие на 5.0», и один раз «Устройства, работающие на 5.1».

Так, чтобы исправить это, мой запрос HTTP должен выглядеть следующим образом:

http://myserver.com/my_stats_scripts/index.php?app_id=com.myCompany.myApp&new_os_ver=5.1&old_os_ver=5.0 

Так что моя база данных может увеличить число 5.1 устройств и снижения число 5.0 устройств по одному.

Конечно, при первом запросе параметр HTTP old_os_ver установлен на пустой, и сервер рассматривает его как новое устройство.

Если я поправлю это право, мне больше не нужны UUID. Но я по-прежнему отправляю системную информацию скрытно на свой сервер. Я думаю, что я также расскажу об этом в Условиях использования.

+0

Отлично! Мое предложение подсчитывает обновления на устройстве и отправляет счетчик обновлений вместе с запросом. Но ваша идея еще лучше, потому что она позволяет отслеживать точные подсчеты на iOS-версию. –

+0

Теперь остается только вопрос: Пользовательские значения по умолчанию, Брелок или/Кэш-файл? –

+1

... или KVS (iCloud Key Value Store)? Для этого есть веские причины. –

1

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

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

Таким образом, проблема в вашем предложении - это UUID. Почему бы просто не оставить его? Ваше приложение отправляет анонимный запрос один раз и локально сохраняет переданную версию iOS. Когда пользователь обновляет ОС, вы отправляете другой запрос с новой версией iOS и количеством обновлений.

Используя эту схему, вы не будете передавать отслеживаемые данные и по-прежнему получать правильную статистику использования.

+0

Продвиньте, отправьте «уникальный запрос», только один раз, без UUID. Но заметьте, что я использую рекомендованный UUID без отслеживания-accross-приложений, возвращаемый CFCreateUUID, и ** не ** устаревший метод UIDevice. –

+0

Я понимаю, что UUID создается приложением. Но поскольку он создан ** только один раз **, его можно использовать для отслеживания отдельных пользователей. Если ваше приложение будет отправлять запросы так часто, вы сможете отслеживать использование (анонимное) пользователя приложения. Apple также собирает анонимные данные об использовании только после того, как пользователи явно выбирают. –

+0

Не все так часто; только после установки и обновления ОС. –

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