मैं Admob के लिए डिवाइस आईडी कैसे प्राप्त कर सकता हूं


102

मैं एंड्रॉइड के लिए एप्लिकेशन विकसित करने के लिए एक्लिप्स का उपयोग कर रहा हूं, और मैं पैसे बनाने के लिए एडमब को एकीकृत करना चाहता हूं। ट्यूटोरियल कहता है कि मुझे आईडी खोजने के लिए लॉगकैट देखना चाहिए, लेकिन यह कहां है? वैकल्पिक शब्द

जब मैं परीक्षण मोड या वास्तविक मोड में दौड़ता हूं, तो कभी-कभी ग्रहण यह सूचित करेगा कि विज्ञापन वापस आ गए, फिर भी यह एमू में नहीं दिखा ... क्या कोई समझा सकता है?

जवाबों:


103

अगर आप एमुलेटर पर एडबॉब विज्ञापन चला रहे हैं तो कोई आईडी नहीं है। बस AdManager विधि का उपयोग करें और इसे TEST_EMULATOR पर सेट करें जैसे कि logcat कहता है। यदि आप USB डिबगिंग वाले वास्तविक उपकरण पर चलते हैं और लॉगकट देखते हैं, तो आईडी वहां दिखाई देगी।


50
उपर्युक्त शर्तों "adRequest" का उपयोग करके फ़िल्टर करने के बाद, आपको एक पंक्ति मिलेगी - "12-19 17: 48: 25.615: I / Ads (2132): इस उपकरण पर परीक्षण विज्ञापन प्राप्त करने के लिए, adRequest.addTTDDice (" D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) कॉल करें। ");"। बस कोड को कॉपी पेस्ट करें और मज़े करें।
अशोक गोली

5
मेरा लॉग कहता है: "इस उपकरण पर परीक्षण विज्ञापन प्राप्त करने के लिए AdRequest.Builder.addTestDevice (" 5EXXXX आदि ") का उपयोग करें।
मार्क ब्रिज

2
बस logcat पर फ़िल्टर फ़ील्ड पर "addTestDevice" टाइप करें।
गायन वेराकुत्ती

क्या हम एक गाये हुए एपीके से डिवाइस आईडी पा सकते हैं, जो Google Play पर प्रकाशित है?
गायन वेराकुर्ती

108

स्वीकृत उत्तर काम करेंगे यदि आप केवल एमुलेटर या कुछ उपकरणों पर परीक्षण कर रहे हैं, लेकिन यदि आप उपकरणों के ढेर पर परीक्षण कर रहे हैं, तो आपको चल रहे डिवाइस के डिवाइस आईडी को जोड़ने के लिए कुछ साधनों की आवश्यकता हो सकती है।

निम्न कोड वर्तमान चल रहे डिवाइस को प्रोग्रामव्यू टेस्ट डिवाइस में प्रोग्रामेटिक रूप से बनाएगा

...
    if(YourApplication.debugEnabled(this)) //debug flag from somewhere that you set
    {

        String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
        String deviceId = md5(android_id).toUpperCase();
        mAdRequest.addTestDevice(deviceId);
        boolean isTestDevice = mAdRequest.isTestDevice(this);

        Log.v(TAG, "is Admob Test Device ? "+deviceId+" "+isTestDevice); //to confirm it worked
    }

आपको एंड्रॉइड आईडी के md5 का उपयोग करने की आवश्यकता है, और इसे ऊपरी मामले की आवश्यकता है। यहाँ md5 कोड का उपयोग किया गया है

public static final String md5(final String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest
                .getInstance("MD5");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < messageDigest.length; i++) {
            String h = Integer.toHexString(0xFF & messageDigest[i]);
            while (h.length() < 2)
                h = "0" + h;
            hexString.append(h);
        }
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        Logger.logStackTrace(TAG,e);
    }
    return "";
}

संपादित करें: जाहिर है कि MD5 विधि isnt एकदम सही नहीं है, और यह https://stackoverflow.com/a/21333739/2662474 की कोशिश करने का सुझाव दिया गया था, मुझे अब इस सुविधा की आवश्यकता नहीं है इसलिए मैंने परीक्षण किया। सौभाग्य!


1
यह शायद कॉल करने से बेहतर है com.google.android.gms.internal.cm.l(Context ctx)जो आंतरिक रूप से बाधित विधि है (संस्करण 4.0.30 में) जो उस आईडी को विचाराधीन लौटा देती है
अमृत

इसके लिए शुक्रिया! बस, पायथन में डाल करने के लिए import hashlib; hashlib.md5(android_id.lower()).hexdigest().upper()। इस तरह से आप अपनी एंड्रॉइड आईडी दिखाने के लिए एक ऐप डाउनलोड कर सकते हैं और उसी का एमडी 5 ले सकते हैं।
डौगार्ड

और सेटिंग वर्ग किस पैकेज से आता है?
oabarca

@ जोसेफ यह सही ढंग से काम नहीं कर रहा है। यह कुछ पात्रों को याद करता है।
5

5
इस उत्तर को देखें: stackoverflow.com/a/21333739/4019544 यह कार्यान्वयन कुछ शून्य को नहीं संभाल रहा है, जो यहां से जुड़ी पोस्ट पर स्वीकृत उत्तर के अनुरूप है।
मैक्स जे पी

17

प्रलेखन से Google विज्ञापन के समान कुछ:

सार्वजनिक AdRequest.Builder AddTestDevice (स्ट्रिंग डिवाइसआईड)

परीक्षण विज्ञापन प्राप्त करने के लिए एक उपकरण का कारण बनता है। DeviceID द्वारा प्राप्त किया जा सकता नया विज्ञापन बनाने के बाद logcat उत्पादन को देखने। एमुलेटर के लिए, DEVICE_ID_EMULATOR का उपयोग करें।

उदाहरण के लिए, LogCat में प्रदर्शित मेरी टेस्ट डिवाइस आईडी है "B86BC9402A69B031A516BC57F7D3063F":

AdRequest adRequest = new AdRequest.Builder() 
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("B86BC9402A69B031A516BC57F7D3063F")
        .build();

16
  • क्या आपका ऐप प्ले स्टोर पर प्रकाशित है - लाइव विज्ञापनों के साथ :

यदि आपका ऐप लाइव विज्ञापनों को दिखाने वाले प्ले स्टोर पर है - तो आप परीक्षण के लिए लाइव विज्ञापनों का उपयोग नहीं कर सकते - अपने वास्तविक डिवाइस पर Admob से परीक्षण विज्ञापन प्राप्त करने के लिए अपनी डिवाइस आईडी को कोड में जोड़ें। विकास या परीक्षण के दौरान कभी भी लाइव विज्ञापनों का उपयोग न करें।

लॉगकैट में असली डिवाइस आईडी प्राप्त करने के लिए,

  1. अपने डिवाइस को USB डीबग मोड में Android स्टूडियो से कनेक्ट करें

USB डिबग मोड (डेवलपर विकल्प)

  1. अपने डिवाइस पर कोई भी ऐप खोलें जो Admob से लाइव विज्ञापन दिखाता है: कनेक्टेड डिवाइस पर, यदि आपका ऐप प्ले स्टोर से डाउनलोड किया गया है (लाइव विज्ञापन दिखा रहा है) तो उस ऐप को खोलें या फिर कोई अन्य ऐप खोलें जो लाइव Admob विज्ञापन दिखाता हो। आपके डिवाइस में इंटरनेट कनेक्शन होना चाहिए।

  2. टेस्ट डिवाइस प्राप्त करने के लिए नीचे दिए गए अनुसार 'डिवाइस' के साथ लॉगकैट को फ़िल्टर करें

Logcat में डिवाइस आईडी का परीक्षण करें

डिवाइस पर Admob विज्ञापन परीक्षण पढ़ें - डिवाइस आईडी अधिक के लिए बदल सकते हैं


मैं एकता देव बिल्ड को चलाते हुए देख रहा था और इसने काम किया। धन्यवाद।
अविसेक चक्रवर्ती

13

Hash Device ID प्राप्त करने के लिए

ऑन्क्रीट के अंदर

String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
        String deviceId = md5(android_id).toUpperCase();
Log.i("device id=",deviceId);

फिर इस वर्ग को md5 के लिए जोड़ें ()

public String md5(String s) {
        try {
            // Create MD5 Hash
            MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
            digest.update(s.getBytes());
            byte messageDigest[] = digest.digest();

            // Create Hex String
            StringBuffer hexString = new StringBuffer();
            for (int i=0; i<messageDigest.length; i++)
                hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

धन्यवाद, लेकिन वास्तव में आपके md5 () फ़ंक्शन में एक सूक्ष्म बग है। वह रेखा जहां आप हेक्सस्ट्रिंग से अपील करते हैं, यह होना चाहिए: hexString.append(String.format("%02X", 0xFF & messageDigest[i])); आपका कार्यान्वयन 15 या उससे कम के बाइट मूल्यों पर गलत आउटपुट देगा क्योंकि अग्रणी शून्य आउटपुट नहीं होगा।
चींटी

अपने md5 () गलत आईडी बनाते हैं, 561600E037F6E9EEBE405B487459D786 लेकिन 56160E037F6E9EEBE405B487459D786 की उम्मीद
Foobnix

7

यदि आप XML लेआउट का उपयोग करके विज्ञापन प्रदर्शित कर रहे हैं और यदि आपके पास पहले से ही आपके लेआउट XML फ़ाइल में "ads: testDevices =" है, तो AdMob LogCat आउटपुट में "इस डिवाइस पर परीक्षण विज्ञापन प्राप्त करने के लिए ..." संदेश नहीं छपेगा। इसे बाहर निकालें और फिर आपको लॉगकैट संदेश दिखाई देगा।

यहाँ LogCat में डिवाइस आईडी खोजने के तरीके के बारे में एक अच्छा ट्यूटोरियल है: http://webhole.net/2011/12/02/android-sdk-tutorial-get-admob-test-device-id/


7

यदि आप वास्तविक डिवाइस पर अपने ऐप का परीक्षण कर रहे हैं तो आप इस छोटे से एंड्रॉइड ऐप को आज़मा सकते हैं जो आपको डिवाइस आईडी देता है:

https://play.google.com/store/apps/details?id=pe.go_com.admobdeviceidfinder&hl=en

आपको हैशेड डिवाइस आईडी सीधे मिल जाएगी। उम्मीद है की यह मदद करेगा।


मुझे यकीन नहीं है कि यह सवाल क्या था। जैसा कि मुझे एमुलेटर से याद है कि आप प्ले स्टोर से इंस्टॉल नहीं कर सकते हैं। संभवतः एक अधिक प्रोग्रामेटिक समाधान (या इस ऐप के स्रोत के प्रासंगिक हिस्से) बेहतर होगा।
गैबोर बाकोस

1
खैर, उनमें से कई ने प्रोग्रामेटिक समाधान पोस्ट किए हैं। मैंने इसे सिर्फ इसलिए पोस्ट किया क्योंकि आईडी पाने के लिए इसका थोड़ा आसान और सीधा फॉरवर्ड तरीका है हालांकि यह एमुलेटर पर काम नहीं करता है। वैसे भी मैंने जवाब संपादित किया।
सनत भारद्वाज

अब सही आईडी प्रदान नहीं करता है।
एवरोरल

6

परीक्षण विज्ञापन दिखाने का एक और सबसे आसान तरीका बैनर के लिए सभी डिवाइसों के लिए एडोबोब टेस्ट विज्ञापन दिखाने के लिए टेस्ट डिवाइस आईडी का उपयोग करना है । " सीए-ऐप-पब -3940256099942544 / 6300978111 "। इस एडोबोब टेस्ट विज्ञापन आईडी को गूगल के लिंक ट्यूटोरियल में नोट किया गया था: लिंक । यह उपरोक्त लिंक से बोली है: यहां छवि विवरण दर्ज करें

  • यह अंतरालीय " ca-app-pub-3940256099942544/1033173712 " के लिए टेस्ट डिवाइस आईडी है । यह भी बीचवाला ट्यूटोरियल में इस्तेमाल किया गया था

5

अगर आपको यह लॉगकैट में नहीं मिलता है, तो बस कोई भी उपकरण आईडी डालें और आप पर विज्ञापन लोड करें और अपना ऐप चलाएं, फिर लॉग पर जाएं आपको ऐसा मिलेगा कि इसके I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.बाद इसे डाल दें और अपना आवेदन फिर से चलाएं।


5

डिवाइस आईडी प्राप्त करने के लिए, अपने फोन को यूएसबी से कनेक्ट करें और एंड्रॉइड स्टूडियो में लॉगकैट खोलें। नीचे दिए गए कोड का उपयोग करें (सुनिश्चित करें कि आपके डिवाइस में यूएसबी डिबगिंग सक्षम है)। फिर कोई भी ऐप खोलें (play store से कोई भी रैंडम ऐप डाउनलोड करें) जिसमें google Ad हो। लॉगकट प्रकार में "सेट" जैसा कि छवि में दिखाया गया है। आपकी डिवाइस आईडी को इमेज में हाइलाइटेड दिखाया गया है

setTestDeviceIds (Arrays.asList ("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")

यहां छवि विवरण दर्ज करें

दिखाए गए अनुसार अपने कोड में टेस्ट डिवाइस का उपयोग करें

val adRequest = AdRequest
        .Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")
        .build()

4

मेरे पास कुछ उपकरण हैं जिन पर मैं परीक्षण कर रहा था, और प्रत्येक के लिए डिवाइसिड को मैन्युअल रूप से प्राप्त नहीं करना चाहता था। प्रोग्राम को व्यावहारिक रूप से प्राप्त करने के लिए यहां दिए गए उत्तर डिवाइसआईडी मेरे लिए काम नहीं कर रहे थे (मिसिंग जीरो), जिसके कारण परीक्षण विज्ञापनों के बजाय वास्तविक विज्ञापन दिखाए गए थे।

मैंने इसे अपने एप्लिकेशन क्लास ऑनक्रिएट में डाल दिया, और फिर एक गेटर पद्धति का उपयोग करके डिवाइस को उजागर किया ताकि इसे पूरे एक्सेस किया जा सके।

@Override
public void onCreate() {        
    super.onCreate();

    String androidId =  Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
    deviceId = MD5(androidId).toUpperCase();        
}  

public static String getDeviceId() {
    return deviceId;
}

private static String deviceId;

और एमडी 5 विधि;

public String MD5(String md5) {
   try {
        java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
        byte[] array = md.digest(md5.getBytes());
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < array.length; ++i) {
            sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
        }
        return sb.toString();
    } catch (java.security.NoSuchAlgorithmException e) {
    }
    return null;
}

फिर जब भी मैं एक AdRequest ऑब्जेक्ट बनाता हूं, तो इसका उपयोग करना:

if(BuildConfig.DEBUG) {
     AdRequest adRequest = new AdRequest.Builder()
          .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
          .addTestDevice(Application.getDeviceId())
          .build();
     adView.loadAd(adRequest);
} else {
     AdRequest adRequest = new AdRequest.Builder()
          .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
          .build();
     adView.loadAd(adRequest);
}

4

इस तरह से काम करता है:

InterstitialAd mInterstitial = new InterstitialAd(this);
    mInterstitial.setAdUnitId("your id");
    AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice("some words")
    .build();
    mInterstitial.loadAd(adRequest);

ऐप चलाने के बाद ... सर्च फील्ड AdRequest में लगाए गए Verbose में Logcat put में जाएं, तो id डिवाइस शो डॉन।

यहां छवि विवरण दर्ज करें

.addTestDevice ("आईडी यहां डाल दें");

मुझे आशा है कि मदद की है;


2

इस वर्ग को अपने प्रोजेक्ट में जोड़ें

import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;

import com.google.android.gms.ads.AdRequest;
import java.io.UnsupportedEncodingException;

public class AdsHelper {
public static AdRequest createRequest(Context context) {
    AdRequest.Builder adRequest = new AdRequest.Builder();
    adRequest.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
    if (BuildConfig.DEBUG) {
        String deviceId = MD5(getDeviceId(context));
        if (!TextUtils.isEmpty(deviceId)) {
            adRequest.addTestDevice(deviceId.toUpperCase());
        }
    }

    return adRequest.build();
}



    private static String MD5(String md5) {
        if (TextUtils.isEmpty(md5)) return null;
        try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            byte[] array = md.digest(md5.getBytes("UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (byte anArray : array) {
                sb.append(Integer.toHexString((anArray & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString();
        } catch (java.security.NoSuchAlgorithmException ignored) {
        } catch(UnsupportedEncodingException ignored){
        }
        return null;
    }

    private static String getDeviceId(Context context) {
        try {
            return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        } catch (Exception e) {
            return "";
        }

    }
}

उपयोग:

AdRequest adRequest = AdsHelper.createRequest(this);

धन्यवाद, परिणाम वही है जो विज्ञापन में logcat में दिखाया गया है।
user2342558

0

एप्लिकेशन: build.gradle

dependencies {
...
compile 'com.google.firebase:firebase-ads:10.0.1'
...
}

आपकी गतिविधि:

 AdRequest.Builder builder = new AdRequest.Builder();
        if(BuildConfig.DEBUG){

            String android_id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
            String deviceId = io.fabric.sdk.android.services.common.CommonUtils.md5(android_id).toUpperCase();
            builder.addTestDevice(deviceId);
        }
        AdRequest adRequest = builder.build();
    adView.loadAd(adRequest);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.