নিরাপদ সংকেত হল এনকোডেড ডেটা যা একটি ক্লায়েন্ট ডিভাইস সংগ্রহ করে এবং নির্বাচিত দরদাতাদের সাথে শেয়ার করে। এই পৃষ্ঠাটি আপনাকে ইন্টারেক্টিভ মিডিয়া বিজ্ঞাপন (IMA) SDK ব্যবহার করে Google বিজ্ঞাপন ম্যানেজারে নিরাপদ সংকেত সংগ্রহ এবং পাঠানোর বিষয়ে নির্দেশনা দেয়।
শুরু করার আগে
চালিয়ে যাওয়ার আগে, আপনার কাছে Android v3.29.0 বা তার পরবর্তী সংস্করণের জন্য IMA SDK আছে কিনা তা যাচাই করে নিন।
নিরাপদ সিগন্যাল অ্যাডাপ্টার ইন্টারফেস তৈরি করুন
নিরাপদ সংকেত সংগ্রহ এবং প্রদান করতে, ইন্টারফেস বাস্তবায়নকারী ক্লাস তৈরি করুন:
package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
/**
* An example implementation of Secure Signals adapter.
*/
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
/**
* Default constructor with no arguments for IMA SDK to instantiate this class.
*/
public MySecureSignalsAdapter() {
}
}
অ্যাডাপ্টারটি আরম্ভ করুন
IMA SDK অ্যাডাপ্টারের ইনিশিয়ালাইজেশন পদ্ধতিটি কল করে প্রতিটি অ্যাডাপ্টার একবার ইনিশিয়ালাইজ করে। যেকোনো এনক্রিপশন নির্ভরতা শুরু করতে, ক্যাশে সেট আপ করতে, অথবা সমস্ত সিগন্যাল সংগ্রহ কলে একই থাকা যেকোনো সিগন্যাল প্রাক-গণনা করতে এই পদ্ধতিটি প্রয়োগ করুন।
নিম্নলিখিত উদাহরণটি অ্যাডাপ্টারটি আরম্ভ করে:
...
/**
* Initialize your SDK and any dependencies.
* IMA SDK calls this function exactly once before signal collection.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass initialization results to IMA SDK.
*/
@Override
public void initialize(Context context, SecureSignalsInitializeCallback callback) {
// Initialize your SDK and any dependencies.
...
// Notify IMA SDK of initialization success.
callback.onSuccess();
// If signal collection fails, call callback.onFailure();
// callback.onFailure(new Exception("Signal collection failed."));
}
...
সংকেত সংগ্রহ
কোনও বিজ্ঞাপনের অনুরোধ শুরু হওয়ার আগে, IMA SDK অ্যাসিঙ্ক্রোনাসভাবে একটি সংগ্রহ সংকেত পদ্ধতি কল করে। এই সংকেত সংগ্রাহক পদ্ধতিগুলিতে এনক্রিপ্ট করা সংকেতগুলি পাস করার জন্য বা কোনও ত্রুটি রিপোর্ট করার জন্য একটি কলব্যাক ফাংশন থাকে।
নিম্নলিখিত উদাহরণগুলি কলব্যাক ফাংশনের মাধ্যমে সুরক্ষিত সংকেত সংগ্রহ করে:
...
/**
* Invokes your SDK to collect, encrypt and pass the signal collection results to IMA SDK.
* IMA SDK calls this function before each ad request.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass signal collection results to IMA SDK.
*/
@Override
public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
try {
// Collect and encrypt the signals.
String signals = ...;
// Pass the encrypted signals to IMA SDK.
callback.onSuccess(signals);
} catch (Exception e) {
// Pass signal collection failures to IMA SDK.
callback.onFailure(e);
}
}
...
ত্রুটি রিপোর্ট করুন
আপনার অ্যাডাপ্টার ক্লাস ব্যবহারকারী ব্যবহারকারীদের সাথে যোগাযোগ করতে, সিগন্যাল সংগ্রহের সময় সমস্ত ত্রুটি রিপোর্ট করুন এবং সেগুলি সিগন্যাল সংগ্রাহক কলব্যাকে পাঠান। এই প্রক্রিয়াটি অ্যাপ্লিকেশনগুলিতে আপনার অ্যাডাপ্টার ইন্টিগ্রেশনের সময় ঘটে যাওয়া সমস্যাগুলির সমাধান করে।
যেসব ত্রুটি দেখা দিতে পারে তা হল:
- আপনার SDK অথবা কোনও নির্ভরতা অ্যাপ্লিকেশনটিতে পাওয়া যায়নি।
- আপনার SDK বা কোনও নির্ভরশীলতার কাজ করার জন্য প্রয়োজনীয় অনুমতি বা ব্যবহারকারীর সম্মতি নেই।
অ্যাডাপ্টারের সংস্করণ উল্লেখ করুন
আপনার ওয়ার্কফ্লোতে, অ্যাডাপ্টারের সংস্করণটি নির্দিষ্ট করে দেখুন। IMA SDK প্রতিটি বিজ্ঞাপন অনুরোধে আপনার অ্যাডাপ্টারের সংস্করণ অন্তর্ভুক্ত করে এবং একটি বিড অনুরোধে সুরক্ষিত সংকেতগুলি দিয়ে সেগুলি পাস করে।
অ্যাডাপ্টার সংস্করণের উপর ভিত্তি করে বিড অনুরোধে, আপনি নিরাপদ সংকেত তৈরি করতে অ্যাডাপ্টারটি যে এনক্রিপশন, এনকোডিং এবং ফর্ম্যাটিং বিবরণ ব্যবহার করে তা সনাক্ত করতে পারবেন।
নিম্নলিখিত উদাহরণটি অ্যাডাপ্টার সংস্করণটি নির্দিষ্ট করে:
...
/**
* Specifies this adapter's version.
*/
private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
...
/**
* @return The version of this adapter.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getVersion() {
return AdapterVersion;
}
...
SDK রানটাইম সংস্করণটি ফেরত দিন
আপনি আপনার SDK-এর একাধিক সংস্করণের সাথে কাজ করার জন্য আপনার অ্যাডাপ্টারটি ডিজাইন করতে পারেন। অ্যাডাপ্টারটি একাধিক সংস্করণের সাথে কাজ করার জন্য, আপনি SDK-এর রানটাইম সংস্করণটি ফেরত দিচ্ছেন কিনা তা যাচাই করুন। প্রতিটি বিজ্ঞাপনের অনুরোধে, IMA SDK অ্যাডাপ্টার সংস্করণের সাথে রানটাইম সংস্করণ অন্তর্ভুক্ত করে।
নিম্নলিখিত উদাহরণগুলি SDK রানটাইম সংস্করণের অনুরোধ করে এবং ফেরত দেয়:
...
/**
* @return The version of your SDK that this adapter is depending on.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getSDKVersion() {
// Request the version from your SDK and convert to an IMAVersion.
int[] mySDKVersion = ...;
return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
}
...
গুগলে অ্যাডাপ্টারটি নিবন্ধন করুন
সিগন্যাল সংগ্রহের জন্য অ্যাডাপ্টারটি অনুমোদন করার জন্য, আপনাকে অবশ্যই Android প্যাকেজের নাম অথবা Google-এর সাথে নিবন্ধন করতে হবে। IMA SDK শুধুমাত্র সেই অ্যাডাপ্টারগুলিকেই আরম্ভ করে যা আপনি Google-এর সাথে নিবন্ধন করেন।
অ্যাডাপ্টার যাচাই করুন
অ্যাডাপ্টারটি যাচাই করতে, নিম্নলিখিত বিভাগগুলি সম্পূর্ণ করুন:
পরীক্ষার অ্যাপ্লিকেশনটি কনফিগার করুন
অ্যাডাপ্টার যাচাই করার আগে, পরীক্ষা অ্যাপ্লিকেশনটি কনফিগার করুন। নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
আপনার মডিউলের অ্যাপ-লেভেল গ্র্যাডল ফাইলে IMA SDK-এর জন্য নির্ভরতা যোগ করুন, যেমন
app/build.gradle:dependencies { implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0' }আপনার অ্যাডাপ্টার এবং SDK এর মতো বিল্ড নির্ভরতা যোগ করুন ।
সংকেতগুলি যাচাই করুন
আপনার অ্যাডাপ্টার সিগন্যাল পাঠাচ্ছে কিনা তা যাচাই করতে, আপনার অ্যাপ্লিকেশনের বিজ্ঞাপন অনুরোধ ট্র্যাফিক পর্যবেক্ষণ করতে একটি নেটওয়ার্ক প্রক্সি ব্যবহার করুন। সফল হলে, আপনি প্রতিটি বিজ্ঞাপন অনুরোধে সিগন্যাল দেখতে পাবেন।
সম্পূর্ণ উদাহরণগুলি পর্যালোচনা করুন
এই বিভাগে সমস্ত ধাপের সম্পূর্ণ উদাহরণ তুলে ধরা হয়েছে এবং আপনার রেফারেন্সের জন্য উপলব্ধ।
package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.VersionInfo;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsCollectSignalsCallback;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsInitializeCallback;
/**
* An example implementation of Secure Signals adapter.
*/
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
/**
* Specifies this adapter's version.
*/
private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
/**
* Default constructor with no arguments for IMA SDK to instantiate this class.
*/
public MySecureSignalsAdapter() {
}
/**
* Initialize your SDK and any dependencies.
* IMA SDK calls this function exactly once before signal collection.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass initialization results to IMA SDK.
*/
@Override
public void initialize(Context context, SecureSignalsInitializeCallback callback) {
try {
// Initialize your SDK and any dependencies.
...
// Notify IMA SDK of initialization success.
callback.onSuccess();
} catch (Exception e) {
// Pass initialization failures to IMA SDK.
callback.onFailure(e);
}
}
/**
* Invokes your SDK to collect, encrypt and send the signal collection results to IMA SDK.
* IMA SDK calls this function before each ad request.
*
* @param context The activity context that creates an ads loader.
* @param callback A callback function to pass signal collection results to IMA SDK.
*/
@Override
public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
try {
// Collect and encrypt the signals.
String signals = ...;
// Pass the encrypted signals to IMA SDK.
callback.onSuccess(signals);
} catch (Exception e) {
// Pass signal collection failures to IMA SDK.
callback.onFailure(e);
}
}
/**
* @return The version of this adapter.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getVersion() {
return AdapterVersion;
}
/**
* @return The version of your SDK that this adapter is depending on.
* IMA SDK calls this function before each ad request.
*/
@Override
public VersionInfo getSDKVersion() {
// Request the version from your SDK and convert to an IMAVersion.
int[] mySDKVersion = ...;
return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
}
}