Как добавить параметры отслеживания к имени пакета Android в теге NFC?

У меня есть метки NFC, которые при прикосновении должны обращаться к определенному приложению на моем телефоне. Поэтому я поместил запись приложения Android в тег для своего com.example.app. Затем, если у пользователя нет приложения, он перенаправляется в магазин Google Play, где его можно загрузить.

Однако я хочу иметь возможность отслеживать, какой тег nfc использовал пользователь. Поэтому я хочу использовать параметры отслеживания, например, в идеале это будет com.example.app/?id=1. но я не думаю, что вы можете сделать это с пакетами в java, и я не думаю, что отслеживание google-analytics зарегистрирует это или зарегистрирует?

Возможно, где-то в системе Android есть код, который, если он видит пакет, которого у него нет, переходит в магазин Google Play со сгенерированным URL-адресом? Где я мог найти это? Возможно, я мог бы редактировать этот скрипт напрямую?


person BigBoy1337    schedule 02.10.2014    source источник


Ответы (2)


Если вы хотите отслеживать использование тегов для установки/загрузки вашего приложения

К сожалению, добавление параметров отслеживания в запись приложения Android (AAR) возможно лишь частично. Например, вы можете создать AAR со следующим именем пакета:

com.example.application&referrer=utm_source%3Dtag1

Этот AAR приведет к открытию Play Store для вашего приложения "com.example.application" и добавит параметр отслеживания, указывающий источник кампании "tag1" (на основе Измерение кампании Google Analytics SDK).

Однако этот AAR никогда не приведет к открытию вашего приложения напрямую. Независимо от того, установлено ваше приложение или нет, Play Store будет открыт. Это связано с тем, что системная служба NFC не поддерживает параметры отслеживания в AAR.

Я не думаю, что работа с идеей ашока об использовании отдельного приложения отслеживания будет очень полезной:

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

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

Альтернативой может быть использование записи URI вместо AAR. Одним из вариантов может быть прямое использование URL-адреса Play Store, который включает параметры отслеживания:

https://play.google.com/store/apps/details?id=com.example.application&referrer=utm_source%3Dtag1

К сожалению, фильтры намерений Android не позволяют фильтровать параметры URL-адреса, поэтому вы можете зарегистрировать свое приложение только для запуска по любому «https://play.google.com/store/apps/details" независимо от идентификатора пакета. Так что этот вариант не совсем подходит.

Лучшим вариантом было бы предоставить веб-службу перенаправителя. Например, ваш редиректор может иметь URL:

http://www.example.com/apps/application/tag1

Затем веб-служба перенаправляет пользователя в Play Store (либо путем перенаправления на URL-адрес Play Store, либо на URL-адрес «market://»):

https://play.google.com/store/apps/details?id=com.example.application&referrer=utm_source%3Dtag1

Таким образом, если ваше приложение еще не установлено на устройстве пользователя, нажатие тега вызовет URL-адрес «http://www.example.com/apps/application/tag1" для открытия в веб-браузере (который, в свою очередь, откроет страницу вашего приложения в Play Store и передаст параметры отслеживания).

Если ваше приложение уже установлено, вы можете перехватить событие NDEF_DISCOVERED для всех своих тегов, зарегистрировав следующий фильтр намерений:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/apps/application/" />
</intent-filter>

Затем в своем приложении вы можете получить намерение NDEF_DISCOVERED и определить тег, который запустил ваше приложение, путем анализа URL-адреса.

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

В этом случае вы должны использовать обычный AAR, который содержит имя пакета вашего приложения, и добавить дополнительную запись внешнего типа форума NFC в качестве первой записи вашего сообщения NDEF:

EXT: example.com:tracking PAYLOAD=tag1
AAR: com.example.application

Затем вы должны зарегистрироваться для этого внешнего типа:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="vnd.android.nfc"
          android:host="ext"
          android:pathPrefix="/example.com:tracking"/>
</intent-filter>

Если ваше приложение не установлено, AAR позаботится о том, чтобы страница вашего приложения в Play Маркете была запущена. Если ваше приложение установлено, ваше приложение будет запущено, и вы сможете проанализировать сообщение NDEF, которое отправляется вашему приложению как часть намерения NDEF_DISCOVERED для записи внешнего типа форума NFC.

person Michael Roland    schedule 09.10.2014
comment
можем ли мы достичь, используя только AAR, даже если приложение не установлено... это был мой обходной путь. Мне нравится предложенный вами подход к перенаправлению URL-адреса веб-сайта, но для этого ему нужно использовать другой веб-сервис. - person ashoke; 10.10.2014
comment
Если бы я выбрал второй вариант и не заботился об отслеживании, если у пользователя уже нет приложения, изменило бы включение nfc с диспетчеризацией переднего плана способ реализации записи внешнего типа? - person BigBoy1337; 10.10.2014
comment
Я не уверен, что вы имеете в виду. Отправка на передний план — это метод, позволяющий присвоить активности приоритет над зарегистрированными в манифесте фильтрами намерений для событий обнаружения NFC, пока она отображается на переднем плане. - person Michael Roland; 12.10.2014
comment
ох человек. Мне очень жаль, я забыл о награде. Я должен был дать это тебе - person BigBoy1337; 15.10.2014

  • вы должны использовать имя пакета приложения как есть, когда создание записи приложения Android (AAR).

  • Когда устройство Android сканирует ваш тег NFC, оно будет искать все AAR в NDEF, и если в настоящее время не установлен соответствующий пакет, оно передаст намерение играть в магазине (для первого AAR). Я не верю, что мы можем изменить код обработки "play store".

  • Но есть обходное решение — если вы хотите использовать play-store и google Analytics для отслеживания того, использовался ли ваш тег nfc, возможно, вы можете подумать о создании простого прокси-приложения/фиктивного приложения (может быть имя пакета mycom.nfc.tracking), и сделайте этот пакет AAR первым в вашем NDEF. Ваше настоящее имя пакета приложения AAR рядом.

    • Это простое приложение для отслеживания может иметь только одно действие, и при вызове через nfc оно будет считывать дополнительные идентификаторы аналитики, которые вы разместили в NDEF для целей отслеживания, и обновлять аналитику Google или любую другую используемую вами аналитическую службу, а затем запускать ваш " реальное приложение», если оно установлено, или передать его в игровой магазин для установки реального приложения.

    • Эта прокси-активность может быть без какого-либо пользовательского интерфейса, поэтому пользователь ничего этого не заметит. Он прозрачен и дает вам гораздо больше гибкости в любой другой бухгалтерии/анализе, связанной с NFC.

    • Если это прокси-приложение/приложение для отслеживания еще не установлено на устройстве, NFC будет передано в магазин игр, и вы сможете использовать аналитику Google для отслеживания использования тега nfc. Это не должно повлиять на пользователя вашего реального приложения, не являющегося пользователем NFC.

  • Обратите внимание, что сопоставление AAR можно полностью пропустить, если уже есть приложение с foreground dispatch feature

person ashoke    schedule 08.10.2014
comment
прохладно. Вы говорите, что если я использую функцию диспетчеризации переднего плана, все это не нужно? Если да, то не могли бы вы уточнить, как можно использовать эту функцию? - person BigBoy1337; 10.10.2014
comment
чтобы использовать foreground dispatch, ваше приложение уже должно быть установлено - person ashoke; 10.10.2014
comment
если приложение не было установлено, и фиктивное приложение не было установлено, то пользователь будет перенаправлен на страницу загрузки фиктивного приложения в игровом магазине, верно? Или он откроет страницу загрузки реального приложения в игровом магазине? Как это возможно? Настроил бы я перенаправление со страницы приложения фиктивного магазина на страницу реального приложения? - person BigBoy1337; 10.10.2014
comment
да, вашему пользователю потребуется играть в магазине для фиктивного приложения, потому что его AAR указан первым в NDEF вашего тега nfc. У вас всегда есть возможность включить все, что вам нравится, в свой фиктивный / отслеживающий apk и его описание в игровом магазине ... даже при необходимости поместить внутрь все реальное приложение (конечно, с именем пакета отслеживания). - person ashoke; 10.10.2014
comment
Было бы идеально, если бы мы могли создать AAR в формате com.example.application&referrer=? вы можете использовать кампанию в Play Store , но похоже, что NFC не может анализировать этот URL-адрес как AAR. - person ashoke; 10.10.2014