कस्टम इवेंट की मदद से, पब्लिशर AdMobका इस्तेमाल कर सकते हैं मीडिएशन को ऐसे तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी के लिए वॉटरफ़ॉल मीडिएशन जोड़ने की सुविधा देता है जो एक ही नहीं है काम करने वाली विज्ञापन नेटवर्क कंपनियों की सूची में से. इस गाइड में, Android और Android के लिए बनाए गए मौजूदा कस्टम इवेंट को इस्तेमाल करने का तरीका बताया गया है Unity प्रोजेक्ट में iOS.
ज़रूरी शर्तें
शुरू करें चरण पूरा करें. आपकी एकता ऐप्लिकेशन में Google मोबाइल विज्ञापन Unity प्लग-इन पहले से ही इंपोर्ट किया जाना चाहिए.
कस्टम इवेंट अडैप्टर, जो Android और iOS के लिए पहले से बनाए गए हैं. कस्टम बनाने के लिए इवेंट अडैप्टर के लिए तैयार हैं. इसके बारे में ज़्यादा जानने के लिए, Android और iOS.
कस्टम इवेंट तय करना
किसी कस्टम इवेंट को मीडिएशन में शामिल करने के लिए, कस्टम इवेंट को को AdMob वेब इंटरफ़ेस में परिभाषित किया जाएगा. किसी इमेज के लिए कस्टम इवेंट को Android और iOS मीडिएशन ग्रुप.
इस स्क्रीनशॉट में, कस्टम इवेंट की कुछ सैंपल सेटिंग दिखाई गई हैं:
पैरामीटर भरने का तरीका | |
---|---|
क्लास का नाम (iOS) |
iOS के लिए, कस्टम इवेंट लागू करने वाली क्लास का नाम डालें. अगर आपकी क्लास Swift में लागू की गई है, तो आपको क्लास के नाम से पहले
उसके ऐप्लिकेशन / फ़्रेमवर्क मॉड्यूल का नाम (उदाहरण के लिए,
अगर आपके प्रोजेक्ट में एक से ज़्यादा टारगेट हैं या अगर
प्रोजेक्ट का नाम टारगेट के नाम से अलग है. टारगेट के नाम के साथ,
यह ऐसा दिखेगा: |
क्लास का नाम (Android) | Android के लिए, पक्का करें कि Class Name के लिए आप जो वैल्यू दें वह है
Android के लिए पूरी तरह क्वालिफ़ाइड क्लास का नाम (उदाहरण के लिए, com.google.ads.mediation.sample.customevent.SampleCustomEvent ).
|
लेबल | इवेंट के लिए कोई यूनीक नाम डालें. |
पैरामीटर | अगर आपको अपने कस्टम इवेंट में कोई स्ट्रिंग आर्ग्युमेंट पास करना है, तो विज्ञापन यूनिट आईडी. |
कस्टम इवेंट लाइब्रेरी इंपोर्ट करें
कस्टम इवेंट बनाने के लिए, अतिरिक्त लाइब्रेरी को शामिल करने की ज़रूरत पड़ सकती है सही तरीके से. उदाहरण के लिए, आपको नीचे दी गई लाइब्रेरी शामिल करनी पड़ सकती हैं:
- Android के लिए तीसरे पक्ष का SDK टूल
- Android के लिए तीसरे पक्ष का कस्टम इवेंट
- iOS तीसरे पक्ष के विज्ञापन का SDK टूल
- iOS तीसरे पक्ष का कस्टम इवेंट
लाइब्रेरी के टाइप
Unity प्रोजेक्ट में Android या iOS कोड को इंपोर्ट करने के कई तरीके हैं, शामिल हैं:
- बाहरी डिपेंडेंसी का इस्तेमाल करके, पहले से बने Android या iOS आर्टफ़ैक्ट इंपोर्ट करना Unity के लिए मैनेजर
- एएआर प्लग-इन और Android लाइब्रेरी इंपोर्ट करना
- Java और Kotlin सोर्स फ़ाइलें इंपोर्ट करना
- iOS सोर्स फ़ाइलें और स्टैटिक लाइब्रेरी इंपोर्ट की जा रही हैं
आप जिन लाइब्रेरी का इस्तेमाल करते हैं उन्हें पैकेज करने के तरीके के आधार पर, आपको किसी दूसरे इंपोर्ट करने की रणनीति तय करें. बाद में, हर विकल्प के बारे में ज़्यादा जानकारी दी गई है.
(सुझाया गया) पहले से बने Android या iOS आर्टफ़ैक्ट को इंपोर्ट करें
External का इस्तेमाल करके Maven या CocoaPods से पहले से बने आर्टफ़ैक्ट इंपोर्ट करना Unity के लिए डिपेंडेंसी मैनेजर. यह प्लग-इन GoogleMobileAds प्लग-इन के साथ शामिल है.
मौजूदा आर्टफ़ैक्ट इंपोर्ट करने के लिए, एक कॉन्फ़िगरेशन फ़ाइल बनाएं. इससे, आयात. फ़ाइल नाम और पाथ की ज़रूरतें नीचे दी गई हैं:
/Editor/
फ़ोल्डर में फ़ाइल मौजूद होनी चाहिए.- फ़ाइल नाम के आखिर में
Dependencies.xml
होना चाहिए.
उदाहरण के लिए, किसी काल्पनिक विज्ञापन नेटवर्क के लिए कस्टम इवेंट के अडैप्टर इंपोर्ट करना
AdPub
नाम की फ़ाइल बनाने के बाद, यह फ़ाइल बनाएं:
Assets/AdPub/Editor/AdPubDependencies.xml
इसके बाद, AdPubDependencies.xml
फ़ाइल में अपनी डिपेंडेंसी तय करें. नियम
इंपोर्ट को कॉन्फ़िगर करने के लिए यहां जाएं
यूनिटी गेटिंग के लिए एक्सटर्नल डिपेंडेंसी मैनेजर
शुरू हो गया. कॉन्टेंट बनाने
नीचे दिए गए कोड स्निपेट में, Android और iOS SDK टूल और कस्टम इवेंट शामिल हैं
एक काल्पनिक "AdPub" के लिए लाइब्रेरी विज्ञापन नेटवर्क कंपनी.
Assets/AdPub/Editor/AdPubDependencies.xml
<dependencies>
<androidPackages>
<androidPackage spec="com.adpub.android:adpub-sdk:1.0.0" />
<androidPackage spec="com.adpub.android:adpub-custom-event:1.0.0">
<repositories>
<repository>https://repo.maven.apache.org/maven2/</repository>
<repository>https://dl.google.com/dl/android/maven2/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="AdPubSDK" version="1.0" />
<iosPod name="AdPubCustomEvent" version="1.0">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>
अगर आपके कस्टम इवेंट आर्टफ़ैक्ट में पहले से ही ज़रूरी विज्ञापन पर निर्भर है नेटवर्क SDK टूल, आपको साफ़ तौर पर SDK टूल डिपेंडेंसी तय करने की ज़रूरत नहीं है: उदाहरण के लिए
एक्सटर्नल डिपेंडेंसी मैनेजर, कॉन्फ़िगरेशन में होने वाले बदलावों पर अपने-आप नज़र रखता है और डिपेंडेंसी से जुड़ी समस्याओं को हल करता है. समस्या को मैन्युअल तरीके से हल करने के लिए, मेन्यू निर्देश का पालन करना:
Assets > External Dependency Manager > Android Resolver > Force Resolve
एएआर प्लग-इन और Android लाइब्रेरी इंपोर्ट करना
Unity *.aar
फ़ाइलों के साथ-साथ, Android लाइब्रेरी प्रोजेक्ट को इंपोर्ट करने की सुविधा देता है. अगर आपने
आपके Android कस्टम इवेंट को इस तरह से पैकेज किया जाता है, AAR प्लग-इन और Android देखें
लाइब्रेरी में निर्देश पाने के लिए
उन फ़ाइलों को अपने Unity प्रोजेक्ट में कैसे शामिल करें.
Java और Kotlin सोर्स फ़ाइलें इंपोर्ट करें
अगर आपके Android डिवाइस में मौजूद कस्टम इवेंट कोड में Unity 2018.2 या इसके बाद वाला वर्शन शामिल है, तो
*.java
या *.kt
फ़ाइलों में से Java या Kotlin सोर्स फ़ाइलों का इस्तेमाल किया जा सकता है
जैसे प्लग-इन.
iOS सोर्स फ़ाइलें और स्टैटिक लाइब्रेरी इंपोर्ट करें
Unity *.framework
आर्टफ़ैक्ट, *.h
, और *.m
सोर्स फ़ाइलों के साथ काम करता है. इंपोर्ट किया जा रहा है
iOS आर्टफ़ैक्ट और सोर्स फ़ाइलों के बारे में नेटिव के लिए Unity की गाइड में बताया गया है
प्लग-इन के बारे में ज़्यादा जानें.
विज्ञापन जांचने वाले टूल की मदद से, कस्टम इवेंट की जांच करना
विज्ञापन जांचने वाले टूल का इस्तेमाल, जांच के लिए किया जा सकता है कस्टम इवेंट आपके ऐप्लिकेशन में सही तरीके से इंपोर्ट किए गए हैं. विज्ञापन इंस्पेक्टर को सिर्फ़ हाथ के जेस्चर से या कम से कम कोड के साथ प्रोग्राम के ज़रिए खोला जा सकता है.
(ज़रूरी नहीं) C# स्क्रिप्ट से तीसरे पक्ष के SDK टूल के नेटिव तरीकों को कॉल करें
तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी के SDK टूल में कुछ खास शर्तें हो सकती हैं. इसके लिए ज़रूरी है कि कॉल करने की सुविधा मिलती है. इन तरीकों को कॉल करने की प्रक्रिया इस तरह के हो सकते हैं:
- प्लैटफ़ॉर्म क्लाइंट के लिए एक सामान्य इंटरफ़ेस तय करना
- इस्तेमाल न किए जा सकने वाले प्लैटफ़ॉर्म के लिए, डिफ़ॉल्ट क्लाइंट लागू करें
- Android के तरीकों को कॉल करने के लिए, Android क्लाइंट को लागू करना
- iOS तरीकों को कॉल करने के लिए, iOS क्लाइंट को लागू करें
- किसी क्लाइंट को लागू करना फ़ैक्ट्री से शर्तों के साथ iOS और Android क्लाइंट के बीच स्विच करें
- तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी के SDK टूल की सभी सुविधाओं को ऐक्सेस करने के लिए एक एपीआई तय करें
नीचे दिया गया सेक्शन दिखाता है कि किसी काल्पनिक रिपोर्ट के लिए, ये चरण कैसे लागू किए जाते हैं "AdPub" नाम की विज्ञापन नेटवर्क कंपनी C# API में, जो Android पर इन तरीकों में कॉल कर सकता है और iOS के लिए:
Android
package com.adpub.android;
public class AdPubSdk
{
public static void setHasUserConsent(boolean hasUserConsent);
}
iOS
@interface AdPubSdk : NSObject
+ (void)setHasUserConsent:(BOOL)hasUserConsent;
@end
प्लैटफ़ॉर्म क्लाइंट के लिए एक सामान्य इंटरफ़ेस तय करना
IAdPubClient
इंटरफ़ेस को ऐसे तरीके से बनाएं जो नीचे दी गई शर्तों को दिखाता हो
Android और iOS एपीआई.
Assets/AdPub/Common/IAdPubClient.cs
namespace AdPub.Common
{
public interface IAdPubClient
{
///<summary>
/// Sets a flag indicating if the app has user consent for advertisement.
///</summary>
void SetHasUserConsent(bool hasUserConsent);
}
}
इस्तेमाल न किए जा सकने वाले प्लैटफ़ॉर्म के लिए डिफ़ॉल्ट क्लाइंट तय करें
IAdPubClient
इंटरफ़ेस को लागू करने वाली एक DefaultClient
क्लास बनाएं, जो
सिर्फ़ तरीके का नाम लॉग करता है. Unity एडिटर और सभी के लिए इस तरीके का इस्तेमाल करें
Android या iOS के अलावा अन्य प्लैटफ़ॉर्म पर.
Assets/AdPub/Common/DefaultClient.cs
namespace AdPub.Common
{
public class DefaultClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
Debug.Log("SetHasUserConsent was called.");
}
}
}
iOS प्लैटफ़ॉर्म क्लाइंट लागू करना
इस पर IAdPubClient
इंटरफ़ेस को लागू करने वाली iOSAdPubClient
क्लास बनाएं
iOS पर. इस तरीके को लागू करने पर,
कॉल करने के लिए InteropServices
iOS AdPubSdk
क्लास में setHasUserConsent()
तरीका.
Assets/AdPub/Platforms/iOS/iOSAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on iOS.
#if UNITY_IOS
// Reference InteropServices to include the DLLImportAttribute type.
using System.Runtime.InteropServices;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class iOSAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
GADUAdPubSetHasUserConsent(hasUserConsent);
}
[DllImport("__Internal")]
internal static extern void GADUAdPubSetHasUserConsent(bool hasUserConsent);
}
}
#endif
इसके बाद, तय किया गया GADUAdPubSetHasUserConsent()
तरीका लागू करें
पढ़ें. C
तरीके का इस्तेमाल करके AdPubClientBridge.m
बनाएं
Unity के मेथड कॉल को हैंडल करने और शुरू करने के लिए GADUAdPubSetHasUserConsent()
AdPubSDK
.
AdPubClientBridge
एक iOS सोर्स फ़ाइल है और इसे इसमें रखा जाना चाहिए
नेटिव के लिए Unity की गाइड में बताए गए तरीके के मुताबिक Plugins/iOS
फ़ोल्डर
प्लग-इन के बारे में ज़्यादा जानें.
Assets/AdPub/Plugins/iOS/AdPubClientBridge.m
#import <AdPubSDK/AdPubSDK.h>
void GADUAdPubSetHasUserConsent(BOOL hasUserConsent) {
[AdPubSDK setHasUserConsent:hasUserConsent];
}
Android प्लैटफ़ॉर्म क्लाइंट को लागू करना
इस पर IAdPubClient
इंटरफ़ेस को लागू करने वाली AndroidAdPubCient
क्लास बनाएं
Android. यह कार्यान्वयन Android Java हेल्पर का उपयोग करता है
क्लास
Android स्टैटिक तरीके setHasUserConsent()
को कॉल करने के लिए.
क्योंकि Android Java हेल्पर क्लास केवल Android
रनटाइम के दौरान, UNITY_ANDROID
कंपाइलर का इस्तेमाल करके, कंपाइलर की गड़बड़ियों से बचा जा सकता है
डायरेक्टिव का इस्तेमाल करके रैप करें
क्लास जैसा कि कोड स्निपेट में दिखाया गया है. इसके अलावा, आपके पास Assembly में
परिभाषाएं
हम Unity 2017.4 और इसके बाद के वर्शन पर काम कर रहे हैं.
Assets/AdPub/Platforms/Android/AndroidAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on Android.
#if UNITY_ANDROID
// Reference the UnityEngine namespace which contains the JNI Helper classes.
using UnityEngine;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class AndroidAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
// Make a reference to the com.adpub.AdPubSDK.
AndroidJavaClass adPubSdk = new AndroidJavaClass("com.adpub.AdPubSdk");
// Call the native setHasUserConsent method of com.adpub.AdPubSDK.
adPubSdk.CallStatic("setHasUserConsent", hasUserConsent);
}
}
}
#endif
क्लाइंट को सही तरीके से लागू करने के लिए, फ़ैक्ट्री तरीका बनाएं
अब आपके पास हर प्लैटफ़ॉर्म के लिए क्लाइंट को लागू करने की सुविधा है, तो
AdPubClientFactory
क्लास की मदद से,
रनटाइम प्लैटफ़ॉर्म के आधार पर IAdPubClient
इंटरफ़ेस. यह क्लास,
कंपाइलर
डायरेक्टिव से
सही IAdPubClient
क्लाइंट दिखाएं.
Assets/AdPub/Common/AdPubClientFactory.cs
namespace AdPub.Common
{
public class AdPubClientFactory
{
// Return the correct platform client.
public static IAdPubClient GetClient()
{
#if !UNITY_EDITOR && UNITY_ANDROID
return new AdPub.Platforms.Android.AndroidAdPubClient();
#elif !UNITY_EDITOR && UNITY_IOS
return new AdPub.Platforms.iOS.iOSAdPubClient();
#else
// Returned for the Unity Editor and unsupported platforms.
return new DefaultClient();
#endif
}
}
}
हर इंटरफ़ेस के तरीके के लिए एक सार्वजनिक एपीआई तय करें
ऐसी AdPubApi
क्लास बनाएं जिसमें आपके
IAdPubClient
इंटरफ़ेस. यह क्लास AdPubClientFactory
का इस्तेमाल करके
IAdPubClient
का इंस्टेंस और मौजूदा SDK टूल के लिए क्लाइंट को कॉल करता है
सुविधाओं के बारे में बात करेंगे.
Assets/AdPub/AdPubApi.cs
using AdPub.Common;
namespace AdPub
{
public class AdPubApi
{
private static readonly IAdPubClient client = GetAdPubClient();
// Returns the correct client for the current runtime platform.
private static IAdPubClient GetAdPubClient()
{
return AdPubClientFactory.GetClient();
}
// Sets the user consent using the underlying SDK functionality.
public static void SetHasUserConsent(bool hasUserConsent)
{
client.SetHasUserConsent(hasUserConsent);
}
}
}
अपने नए तय किए गए एपीआई को कॉल करें
ऊपर बताए गए एपीआई को कॉल करने का तरीका यहां बताया गया है:
Assets/Scripts/AdPubController.cs
using UnityEngine;
using AdPub;
public class AdPubController : MonoBehaviour
{
// TODO: Get consent from the user and update this userConsent field.
public bool userConsent;
// Called on startup of the GameObject it's assigned to.
public void Start()
{
// Pass the user consent to AdPub.
AdPubApi.SetHasUserConsent(userConsent);
}
}
विज्ञापन नेटवर्क कंपनी के अडैप्टर के कुछ और उदाहरण
Google मोबाइल विज्ञापन Unity प्लग-इन GitHub पर जाएं डेटा स्टोर करने की जगह C# API को लागू करने वाले तीसरे पक्ष के मीडिएशन अडैप्टर के अतिरिक्त उदाहरणों के लिए का इस्तेमाल करके iOS और Android तरीकों का इस्तेमाल करके कॉल को रैप किया जा सकता है.