2017-02-07 36 views
6

Konfiguruję śledzenie kampanii za pomocą niestandardowych narzędzi analitycznych (nie Google Analytics) i konfiguruję odbiornik. Mój odbiornik wydaje się działać, ale po zainstalowaniu pojawia się ostrzeżenie android niestrzępiącą:Uprawnienia Androida do ograniczenia INSTALL_REFERRER do gry w sklepie

ExportedReceiver: Receiver does not require permission 

wygląda jak każdy stary android aplikacja mogła zadzwonić do mojego wniosku z com.android.vending.INSTALL_REFERRER intencją który nie chcę. Powinien to być Sklep Google Play (lub jakakolwiek inna aplikacja systemu Android, która instalowałaby moją aplikację ze sklepu Play) wysyłająca tę intencję do mojej aplikacji.

Tak więc próbowałem dowiedzieć się, jak skonfigurować uprawnienie, które ogranicza ważne aplikacje do Sklepu Play, ale nie mogę znaleźć prawidłowego sposobu ustawienia zezwolenia zgodnie z dokumentacją:

https://developer.android.com/guide/topics/manifest/permission-element.html

Czy ktoś mógłby mi pomóc ustawić uprawnienie ograniczające aplikacje, które moja aplikacja zaakceptuje w sklepie gier? Oto mój obecny odbiornik config:

<receiver 
      android:name=".referrals.MyCampaignTrackingReceiver" 
      android:enabled="true" 
      android:exported="true"> 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER"/> 
     </intent-filter> 
    </receiver> 

Próbowałem ustawienie zgody na odbiorniku na poziomie normal ale uniemożliwił aplikację od otrzymania intencję z playstore.

+2

Dlaczego tak się martwisz o zgodę tego syndyka? Zakładając, że wiesz, że musisz obsłużyć tę transmisję tylko raz, zaraz po instalacji, i podejmiesz kroki, aby poradzić sobie z nią tylko raz, osoba atakująca będzie musiała wiedzieć, kiedy twoja aplikacja została zainstalowana i jakoś wysłać tę transmisję przed aplikacją Playstore. Wydaje mi się to mało prawdopodobne. –

+0

@Yoni Gross Szczerze mówiąc, nie zastanawiałem się, czy można go nazwać tylko raz, co i tak byłoby korzystne. – CorayThan

+0

@YoniGross Jeśli chcesz dodać swój komentarz jako odpowiedź, zrobię z niego zaakceptowaną odpowiedź, ponieważ tak właśnie robię w mojej aplikacji. Dałem nagrodę ozbekowi, ponieważ odpowiedział na to pytanie, ale twoja sugestia jest dla mnie lepsza. – CorayThan

Odpowiedz

2

INSTALL_REFERRER zezwolenie transmisji nie jest wielkim problemem. Zakładając, że wiesz, że musisz obsłużyć tę transmisję tylko raz, zaraz po instalacji, i podejmiesz kroki, aby poradzić sobie z nią tylko raz, osoba atakująca będzie musiała wiedzieć, kiedy twoja aplikacja została zainstalowana i jakoś wysłać tę transmisję przed aplikacją Playstore, która wydaje się mało prawdopodobne.

3

Musisz ustawić atrybut android:permission na swoim odbiorniku. Tak że będzie ona wyglądać następująco:

<receiver 
     android:name=".referrals.MyCampaignTrackingReceiver" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.CLEAR_APP_CACHE"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER"/> 
    </intent-filter> 
</receiver> 

Wykorzystanie "android.permission.CLEAR_APP_CACHE" tutaj jest dowolna, można użyć dowolnego pozwolenie, które odgrywają Store ma i jest niemożliwe dla aplikacji firm trzecich mieć (bo CLEAR_APP_CACHE s ochrony poziom to system|signature tylko aplikacje systemowe lub aplikacje podpisane tym samym certyfikatem, co aplikacja, która zadeklarowała to uprawnienie, w tym przypadku platforma). Na przykład, manifest manifestu Play Store sugeruje, że "com.android.vending.permission.C2D_MESSAGE" może być kolejnym dobrym kandydatem.

Mam nadzieję, że to pomoże.

+0

Nie miałem jeszcze okazji przetestować tego, ale to, co opisujesz, ma wiele sensu. – CorayThan