অ্যাডমব-এর জন্য আমি কীভাবে ডিভাইস আইডি পেতে পারি


103

আমি অ্যান্ড্রয়েডের জন্য অ্যাপ্লিকেশনগুলি বিকাশ করতে Eclipse ব্যবহার করছি এবং অর্থ উপার্জনের জন্য আমি অ্যাডমবকে সংহত করতে চাই। টিউটোরিয়ালটি বলে যে আইডি সন্ধানের জন্য আমার লগগ্যাটটি দেখা উচিত, তবে এটি কোথায়? বিকল্প পাঠ

আমি যখন পরীক্ষার মোডে বা আসল মোডে চলে যাই তখন কখনও কখনও গ্রহপটি বিজ্ঞাপনটি ফিরে আসার বিষয়টি জানায়, তবু এটি ইমুর মধ্যে প্রদর্শিত হয় না ... কেউ কি ব্যাখ্যা করতে পারেন?

উত্তর:


106

যদি আপনি কোনও এমুলেটরটিতে অ্যাডমব বিজ্ঞাপনগুলি চালাচ্ছেন তবে কোনও আইডি নেই। লগক্যাট যেমনটি বলেছে ঠিক তেমন অ্যাডম্যানেজার পদ্ধতিটি ব্যবহার করে TEST_EMULATOR এ সেট করুন। আপনি যদি ইউএসবি ডিবাগিং সহ কোনও আসল ডিভাইসে চালনা করেন এবং লগক্যাটটি দেখেন, আইডিটি সেখানে উপস্থিত হবে।


51
উল্লিখিত উপরের চুক্তি "adRequest" ব্যবহার ফিল্টারিং করার পরে, আপনি একটি লাইন পাবেন - "12-19 17: 48: 25,615 আমি / বিজ্ঞাপনগুলি (2132): এই ডিভাইসে পরীক্ষা বিজ্ঞাপন পেতে, কল adRequest.addTestDevice (" D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ");"। কেবল কোডটি পেস্ট করুন এবং মজা করুন।
অশোক গলি

5
আমার লগতে বলা হয়েছে: "এই ডিভাইসে পরীক্ষামূলক বিজ্ঞাপনগুলি পেতে AdRequest.Builder.addTestDevice (" 5EXXXX ইত্যাদি ") ব্যবহার করুন" "
মার্ক ব্রিজগুলি

4
লগকটে ফিল্টার ফিল্ডে কেবল "অ্যাডটেষ্টডেভাইস" টাইপ করুন।
গায়ান ওয়েরাকুট্টি

গুগল প্লেতে প্রকাশিত ডিজেড এপিএল থেকে আমরা ডিভাইস আইডি পেতে পারি?
গায়ান ওয়েরাকুট্টি

আপনি "অনুরোধ কনফিগারেশন.বিল্ডার ()। সেটস্টেস্ট ডিভাইসআইডস"
hids

109

স্বীকৃত উত্তরগুলি যদি আপনি কেবল এমুলেটর বা কয়েকটি ডিভাইসে পরীক্ষা করে থাকেন তবে কাজ করবে তবে আপনি যদি ডিভাইসের আধিক্য পরীক্ষা করে দেখছেন তবে চলমান ডিভাইসের আইডি আইডি যুক্ত করার জন্য আপনার কিছু উপায়ের প্রয়োজন হতে পারে।

নিম্নলিখিত কোডটি চলমান চলমান ডিভাইসটিকে প্রোগ্রামগতভাবে একটি অ্যাডভিউ পরীক্ষার ডিভাইসে পরিণত করবে

...
    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
    }

আপনার অ্যান্ড্রয়েড আইডির এমডি 5 ব্যবহার করা উচিত এবং এটি আপার কেস হওয়া দরকার। আমি যে এমডি 5 কোড ব্যবহার করেছি তা এখানে

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 "";
}

সম্পাদনা: দৃশ্যত এমডি 5 পদ্ধতি নিখুঁত নয়, এবং এটি https://stackoverflow.com/a/21333739/2662474 চেষ্টা করার পরামর্শ দেওয়া হয়েছিল আমার এখন আর এই বৈশিষ্ট্যটির প্রয়োজন নেই তাই আমি পরীক্ষা করে নিই। শুভকামনা!


4
এটি সম্ভবত কল করার চেয়ে ভাল com.google.android.gms.internal.cm.l(Context ctx)যা অভ্যন্তরীণ অবলম্বন পদ্ধতি (সংস্করণ 4.0.30 এ) যা আইডি প্রত্যাবর্তন করে ফিরে আসে
আমর মোস্তফা

এই জন্য আপনাকে ধন্যবাদ! শুধু পাইথনে এটি রাখা import hashlib; hashlib.md5(android_id.lower()).hexdigest().upper(),। এইভাবে আপনি আপনার অ্যান্ড্রয়েড আইডি দেখানোর জন্য কেবল একটি অ্যাপ্লিকেশন ডাউনলোড করতে পারেন এবং এর এমডি 5 নিতে পারেন।
ডাগগার্ড

এবং সেটিংস ক্লাসটি কোন প্যাকেজ থেকে আসে?
ওবারকা

@ জোসেফ এটি সঠিকভাবে কাজ করছে না। এটি কিছু অক্ষর মিস করে।

5
এই উত্তরটি দেখুন: stackoverflow.com/a/21333739/4019544 এই প্রয়োগটি এখানে লিঙ্কযুক্ত পোস্টে গৃহীত উত্তরের সাথে সামঞ্জস্যপূর্ণ কিছু শূন্যগুলি পরিচালনা করছে না।
ম্যাকজেজে

17

ডকুমেন্টেশন থেকে গুগল বিজ্ঞাপনের মতো কিছু:

সর্বজনীন AdRequest.Builder addTestDevice (স্ট্রিং ডিভাইসআইডি)

কোনও ডিভাইসকে পরীক্ষার বিজ্ঞাপনগুলি গ্রহণের কারণ দেয়। নতুন বিজ্ঞাপন তৈরির পরে লগক্যাট আউটপুট দেখে ডিভাইসআইডি পাওয়া যাবে অনুকরণকারীদের জন্য, DEVICE_ID_EMULATOR ব্যবহার করুন।

উদাহরণস্বরূপ, লগগিতে প্রদর্শিত আমার টেস্ট ডিভাইস আইডিটি হ'ল "B86BC9402A69B031A516BC57F7D3063F":

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

16
  • আপনার অ্যাপটি কি প্লে স্টোরে প্রকাশিত হয় - লাইভ বিজ্ঞাপন সহ :

আপনার অ্যাপ্লিকেশন যদি লাইভ বিজ্ঞাপন দেখায় প্লে স্টোরে থাকে - আপনি পরীক্ষার জন্য লাইভ বিজ্ঞাপনগুলি ব্যবহার করতে পারবেন না - আপনার আসল ডিভাইসে অ্যাডমব থেকে পরীক্ষামূলক বিজ্ঞাপনগুলি পেতে কোডে আপনার ডিভাইস আইডি যুক্ত করুন। বিকাশ বা পরীক্ষার সময় কখনও লাইভ বিজ্ঞাপন ব্যবহার করবেন না।

লগক্যাটে আসল ডিভাইস আইডি পেতে,

  1. ইউএসবি ডিবাগ মোডে আপনার ডিভাইসটি অ্যান্ড্রয়েড স্টুডিওতে সংযুক্ত করুন

ইউএসবি ডিবাগ মোড (বিকাশকারী বিকল্প)

  1. আপনার ডিভাইসে এমন কোনও অ্যাপ্লিকেশন খুলুন যা অ্যাডমব থেকে লাইভ বিজ্ঞাপন দেখায়: সংযুক্ত ডিভাইসে, আপনার অ্যাপটি প্লে স্টোর থেকে ডাউনলোড করা থাকলে (লাইভ বিজ্ঞাপন দেখানো হচ্ছে) সেই অ্যাপ্লিকেশনটি খুলুন বা অন্য কোনও অ্যাপ্লিকেশন খুলুন যা সরাসরি অ্যাডমব বিজ্ঞাপন দেখায়। আপনার ডিভাইসে একটি ইন্টারনেট সংযোগ থাকা উচিত।

  2. পরীক্ষার ডিভাইস পেতে নীচে প্রদর্শিত হয়েছে বলে 'ডিভাইস' দিয়ে লগক্যাটটি ফিল্টার করুন

লগকটে ডিভাইস আইডি পরীক্ষা করুন

ডিভাইসে অ্যাডমব বিজ্ঞাপন পরীক্ষাটি পড়ুন - ডিভাইস আইডিগুলি পরিবর্তন করতে পারে আরও বেশি করে


আমি ইউনিটি দেব বিল্ড চালানোর সময় দেখছিলাম এবং এটি কাজ করেছিল worked ধন্যবাদ
অ্যাভিসেক চক্রবর্তী

13

হ্যাশ ডিভাইস আইডি পেতে

oncreate ভিতরে

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

তারপরে এমডি 5 () এর জন্য এই শ্রেণিটি যুক্ত করুন

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 "";
    }

ধন্যবাদ, তবে আপনার এমডি 5 () ফাংশনে আসলে একটি সূক্ষ্ম বাগ আছে। আপনি হেক্স স্ট্রিংয়ে যে লাইনটি যুক্ত করেছেন তা হ'ল: hexString.append(String.format("%02X", 0xFF & messageDigest[i])); আপনার প্রয়োগটি 15 বা তার কম বাইট মানগুলিতে ভুল আউটপুট দেবে কারণ শীর্ষস্থানীয় শূন্যটি আউটপুট হবে না।
পিপীলিকা

আপনার এমডি 5 () ভুল আইডি জেনারেট করে, 561600E037F6E9EEBE405B487459D786 তবে 56160E037F6E9EEBE405B487459D786
ফুবনিক্স

7

আপনি যদি এক্সএমএল লেআউট ব্যবহার করে বিজ্ঞাপন প্রদর্শন করছেন এবং যদি আপনার লেআউট এক্সএমএল ফাইলে ইতিমধ্যে "বিজ্ঞাপন: টেস্টড্যাভিসেস =" থাকে, অ্যাডমব লগগেট আউটপুটে "এই ডিভাইসে পরীক্ষামূলক বিজ্ঞাপন পেতে ..." বার্তাটি প্রিন্ট করবে না। এটি বের করে নিন এবং তারপরে আপনি লগগ্যাট বার্তাটি দেখতে পাবেন।

এখানে কিভাবে 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

আপনি সরাসরি হ্যাশ ডিভাইস আইডি পাবেন। আশাকরি এটা সাহায্য করবে.


আমি নিশ্চিত নই যে এটিই প্রশ্নটি ছিল। আমি যেমন এমুলেটর থেকে মনে আছে আপনি প্লে স্টোর থেকে ইনস্টল করতে পারবেন না। সম্ভবত আরও একটি প্রোগ্রামেটিক্যাল সমাধান (বা এই অ্যাপ্লিকেশনটির উত্সের প্রাসঙ্গিক অংশগুলি) আরও ভাল।
গ্যাবার বাকোস

4
ঠিক আছে তাদের মধ্যে অনেকে প্রোগ্রামেটিক্যাল সমাধান পোস্ট করেছেন। আমি কেবল এটি পোস্ট করেছি কারণ এটি এমুলেটরটিতে কাজ না করে আইডি পাওয়ার জন্য এটি একটি সামান্য সহজ এবং সোজা সামনের উপায়। যাইহোক আমি উত্তর সম্পাদনা করেছি।
সনথ ভরদ্বাজ

6

পরীক্ষার বিজ্ঞাপনগুলি দেখানোর আর একটি সহজ উপায় হ'ল সমস্ত ডিভাইসের অ্যাডমোব টেস্ট বিজ্ঞাপনগুলি দেখানোর জন্য ব্যানারটির জন্য পরীক্ষা ডিভাইস আইডি ব্যবহার করা । " সিএ-অ্যাপ-পাব-3940256099942544/6300978111 "। এই অ্যাডমোব পরীক্ষার বিজ্ঞাপন আইডি গুগল: লিঙ্কের অ্যাডমোব টিউটোরিয়ালে উল্লেখ করা হয়েছিল । এটি উপরের লিঙ্কটির উদ্ধৃতি: এখানে চিত্র বর্ণনা লিখুন


6

ডিভাইস আইডি পেতে, আপনার ফোনটি ইউএসবির সাথে সংযুক্ত করুন এবং অ্যান্ড্রয়েড স্টুডিওতে লগক্যাট খুলুন নীচের কোডটি ব্যবহার করুন (আপনার ডিভাইসে ইউএসবি ডিবাগিং সক্ষম হয়েছে তা নিশ্চিত করুন)। তারপরে গুগল অ্যাড রয়েছে এমন কোনও অ্যাপ (প্লে স্টোর থেকে কোনও এলোমেলো অ্যাপ ডাউনলোড করুন) খুলুন। ছবিতে প্রদর্শিত হিসাবে লকক্যাট টাইপ "সেট" করুন। আপনার ডিভাইস আইডি চিত্র হিসাবে হাইলাইট করা হয়

সেটটেষ্টডেভাইসআইডস (অ্যারেএস.এললিস্ট ("সিসি 9 ডিডব্লিউ 7 ডাব্লু 7 আর 4 এইচএনএন 3 এলটি 9 এলওএফ 7455F8800D"))

এখানে চিত্র বর্ণনা লিখুন

প্রদর্শিত হিসাবে আপনার কোড টেস্ট ডিভাইস ব্যবহার করুন

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

5

আপনি যদি লগকটে এটি না পান তবে কোনও ডিভাইস আইডি রাখুন এবং আপনার বিজ্ঞাপনগুলি লোড করুন এবং আপনার অ্যাপ্লিকেশনটি চালান তবে লগ এ যান তারপরে আপনি এটির মতো পেয়ে যাবেন I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.এবং আপনার অ্যাপ্লিকেশনটি আবার চালাবেন।


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;
}

তারপরে যখনই আমি একটি অ্যাড্রোয়েস্ট অবজেক্ট তৈরি করি তখন এটি ব্যবহার করে:

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);

অ্যাপ্লিকেশন চালানোর পরে ... লগক্যাটটিতে যান ভার্বোজে অনুসন্ধানের ক্ষেত্র অ্যাডরকোয়েস্টে রাখুন, তাই আইডি ডিভাইসটি ডন দেখায়।

এখানে চিত্র বর্ণনা লিখুন

.addTestDevice ("আইডিটি এখানে রাখুন");

আমি আশা করি সাহায্য করেছে;


4

এই প্রকল্পটি আপনার প্রকল্পে যুক্ত করুন

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);

ধন্যবাদ, ফলাফলটি অ্যাডক্যুয়েস্টের লগকটে যেমন দেখানো হয়েছিল ঠিক তেমন।
ব্যবহারকারী 2342558

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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.