Андроид позволяет решить эту задачу, начиная с версии 1.6. В Google Analytics SDK реализован механизм отслеживания рекламной компании. В рамках этого механизма Google Play передает установленому приложению некоторую информацию через интент "com.android.vending.INSTALL_REFERRER". В приложение эту информацию можно стандартным методом получить и обработать:
AndroidManifest.xml
<receiver android:exported="true" android:name=".ReferrerReceiver"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER"> </action></intent-filter> </receiver>ReferrerReceiver.java
public class ReferrerReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) { CharSequence contentText = intent.getExtras().getString("referrer"); Toast.makeText(context, contentText, Toast.LENGTH_LONG).show(); } } }Код в примере полностью рабочий, но между тем, во многих местах обсуждается, что данный механизм не работает. К примеру на Stack Overflow много вопросов на эту тему: раз, два. В багтрекере Андроид открыто несколько ошибок: раз, два.
Причина этих вопросов в том, что отсылка интента зависит от версии Андроила и, что более важно, от версии Google Play. Правила отсылки интента менялись из-за изменений в политике безопасности и на текущей момент надо учитывать два обстоятельства:
- Правильный формат ссылки на приложение в Google Play такой:
http://market.android.com/details?id=com.package.name&referrer=text_will_be_send илиmarket://details?id=com.package.name&referrer=text_will_be_send , если переходить по ссылке внутри приложения. Данные после парметра referrer будут переданы, данные после других параметров не учитываются. - Начиная с 12-го уровня API (Андроид 3.1) у приложения в системе появился дополнительное состояние "остановленное" (“stopped” state). Если приложение находится в этом состоянии, то система не передает ему никакие интенты, кроме интента запуска "android.intent.action.MAIN". После этого приложение переходит в обычное состояние и начинает получать все интенты, на которое оно подписалось. Этот момент не очень четко отражен в официальной документации и я рекомендую прочитать статью на английском языке в блоге devmaze в которой описываются все детали.
По этой причине на устройствах с Андроид 3.2 или Андроид 4.0 приложение получает интент "com.android.vending.INSTALL_REFERRER" только в момент первого запуска, а не сразу после установки.
Комментариев нет:
Отправить комментарий