Андроид позволяет решить эту задачу, начиная с версии 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" только в момент первого запуска, а не сразу после установки.

Комментариев нет:
Отправить комментарий