12

से स्थापित किया गया था, मैंने हाल ही में ब्लैकमार्केट एप्लिकेशन की खोज की है, यह Google Play-Store ऐप्स की एक चीर है, जहां ये लोग Play-Store से एक पेड ऐप लेते हैं और अपने उपयोगकर्ताओं को देते हैं इसे डाउनलोड करें और इसे मुफ्त में उपयोग करें।सुनिश्चित करें कि एंड्रॉइड एप्लिकेशन Play-Store

एक डेवलपर जो मेरे ऐप के लिए एक हिरण चार्ज करने की योजना बना रहा है, यह मुझे परेशान करता है, और मैं यह सुनिश्चित करना चाहता हूं कि मेरा एप्लिकेशन Play Store के माध्यम से स्थापित किया गया था, या जो भी स्टोर मैं स्वीकार करता हूं।

मुझे लगता है कि इस तरह की चीज को सत्यापित करने का एकमात्र तरीका अभियान ट्रैकिंग के माध्यम से है, लेकिन चूंकि Google Analytics v2, अभियान की ट्रैकिंग जार में एक रिसीवर में की जाती है।

क्या मेरे ऐप की स्थापना की उत्पत्ति को निर्धारित करने का कोई अन्य तरीका है? क्या अभियान ट्रैकिंग डेटा को अवरुद्ध करने का कोई तरीका है?

धन्यवाद।

+2

तो इसकी एक प्ले स्टोर पर भुगतान किया एप्लिकेशन को आप गूगल लाइसेंस एपीआई http://developer.android.com/google/play/licensing/index.html उपयोग कर सकते हैं। यह जांचता है कि ऐप को Google खाते के माध्यम से खरीदा गया था और यदि नहीं, तो आप एक त्रुटि प्रदर्शित कर सकते हैं और खरीदारी – Boardy

+1

खरीदने के लिए उन्हें Play store पर ले जा सकते हैं: http://developer.samsung.com/forum/thread/ getinstallerpackagename-return-value-in-samsung-phone/77/177735। फिर 'पैकेज प्रबंधक 02 = getPackageManager(); स्ट्रिंग स्थापना स्रोत = pm.getInstallerPackageName (getPackageName()); '- चिह्नित होने पर स्थापित होने पर, इंस्टॉलेशन स्रोत 'com.google.android%' या 'com.android.vending%' जैसे कुछ वापस करेगा - हालांकि यह परिवर्तन और आप किसी बदलाव के मामले में इसे बनाए रखना (समर्थन) करना है - अन्य किसी अन्य एप्लिकेशन (अवांछित वाले :)) से यह शून्य (डीबगर से) या कुछ अन्य पैकेज नाम वापस कर देगा। – g00dy

+0

@ बोर्डी यह चेक उपयोगकर्ता के प्रति उपयोगकर्ता या डिवाइस है? क्या होगा यदि डिवाइस पर दो खाते हैं? – TacB0sS

उत्तर

3

इस लिंक को देखें here। तब

PackageManager pm = getPackageManager(); 
String installationSource = pm.getInstallerPackageName(getPackageName()); 

जब से चिह्नित स्थापित, installationSourcecom.google.android% या com.android.vending% की तरह कुछ वापस आ जाएगी। हालांकि यह परिवर्तन होता है और आपको परिवर्तन के मामले में इसे बनाए रखना (समर्थन) करना पड़ता है - अन्यथा यह किसी अन्य एप्लिकेशन (अवांछित वाले :)) से शून्य (डीबगर से) या कुछ अन्य पैकेज नाम वापस कर देगा)

+0

'com.android.vending' को छोड़कर, जो सभी नए इंस्टॉलेशन दिखाना चाहिए, क्योंकि Google-Market Google Play-Store में बदल गया है ... मुझे यह भी पता चला है कि 0.002% नए इंस्टॉल 'com.google' से आता है .android.feedback 'जो मुझे आश्चर्य करता है कि वह क्या है? – TacB0sS

0

Play Store से कोई ऐप यह जानने का सबसे अच्छा तरीका है कि g00dy ने सुझाव दिया है: इंस्टॉलर पैकेज नाम का उपयोग करना।

String packageName = appContext.getPackageName(); 
String installerPackage = appContext.getPackageManager().getInstallerPackageName(packageName); 

अगर ऐप्लिकेशन Play स्टोर (भले ही एप्लिकेशन एक पीसी के साथ खरीदा जाता है) में डाउनलोड किया जाता है, installerPackage "com.vending.google" होना चाहिए।

+0

असल में @ g00dy ने सुझाव दिया ... – TacB0sS

+0

धन्यवाद! मेरी गलती के लिए क्षमा करें। मैंने इसे सही किया :) –

+0

@ TacB0sS - स्वीकार करने के लिए धन्यवाद। – g00dy

0

मुझे मिला इस http://developer.android.com/google/play/licensing/licensing-reference.html#lvl-summary

public boolean allowAccess() { 
    long ts = System.currentTimeMillis(); 
    if (mLastResponse == LicenseResponse.LICENSED) { 
     // Check if the LICENSED response occurred within the validity timeout. 
     if (ts <= mValidityTimestamp) { 
      // Cached LICENSED response is still valid. 
      return true; 
     } 
    } else if (mLastResponse == LicenseResponse.RETRY && 
       ts < mLastResponseTime + MILLIS_PER_MINUTE) { 
     // Only allow access if we are within the retry period or we haven't used up our 
     // max retries. 
     return (ts <= mRetryUntil || mRetryCount <= mMaxRetries); 
    } 
    return false; 
} 
+0

मुझे सच में यकीन नहीं है कि यह मुझे वही देता है जो मुझे चाहिए, लेकिन एक बार मुझे मौका मिलेगा, मैं इसे जाने दूंगा ... धन्यवाद – TacB0sS

संबंधित मुद्दे