bidmad_plugin

Creator: coderz1093

Last updated:

0 purchases

bidmad_plugin Image
bidmad_plugin Images
Add to Cart

Description:

bidmad plugin

Introduce #
BidmadPlugin is a plugin for using Bidmad, a mobile app advertisement SDK, in Flutter.
You can use the plugin to serve banner/interstitial/reward ads in your flutter mobile app.
Flutter Sample Download
Programming Guide #
1. Android Setting #
*If you are using a version lower than 1.0.0, please check here first before proceeding to the guide below.
1.1 gradle.properties Setting
Add the options below to gradle.properties
...
android.enableDexingArtifactTransform=false
copied to clipboard
1.2 Proguard Settings
If you are using Proguard, add the rule below.
...
-keep class com.adop.sdk.** { *; }
-keep class ad.helper.openbidding.** { *; }
-keep class com.adop.sdk.adapter.**{ *; }
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}

# Pangle
-keep class com.bytedance.sdk.** { *; }
-keep class com.bykv.vk.openvk.component.video.api.** { *; }

# Tapjoy
-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keepattributes *Annotation*
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**
copied to clipboard
1.3 Admob Application ID Settings
Declare the code below under the application tag in AndroidManifest.xml inside the Android app module.(Guide)
*Check the value of com.google.android.gms.ads.APPLICATION_ID in the Admob dashboard.
<application>
...
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="APPLICATION_ID"/>
...
</application>
copied to clipboard
2. iOS Setting #
2.1 import BidmadSDK-iOS CocoaPods
After fetching our plugin into your app by "flutter pub get", a "Podfile" will be generated in your project's iOS Folder.

In Podfile, set the platform requirement to iOS 12.

Install our CocoaPods iOS Framework with command "pod install"

Now, open the Xcode Workspace file with the name "Runner.xcworkspace" and proceed to guide 2.2 below.


2.2 Xcode Build Setting
Select "No" for Enable Bitcode under your Build Setting.
2.3 Setting SKAdNetwork
To use AdNetworks provided by BidmadSDK, you need to add SKAdNetworkIdentifier to Info.plist. Please add SKAdNetworkItems below to info.plist.

SKAdNetworkItems List

<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>238da6jt44.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>24t9a8vw3c.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>24zw6aqk47.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>252b5q8x7y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>275upjj5gd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>294l99pt4k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>32z4fx6l9h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3l6bd9hu43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>424m5254lk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44jx6755aq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>44n7hlldy6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>488r3q3dtq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4mn522wn87.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4pfyvq9l8r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4w7y6s5ca2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>523jb4fst2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>52fl2v3hgk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>54NZKQM89Y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>54nzkqm89y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5l3tpt7t6e.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5lm9lj6jb7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5tjdwbrq8w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6964rsfnh4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6g9af3uyq4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6p4ks3rnbw.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6v7lgmsu45.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6xzpu9s2p8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>6yxyv74ff7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>737z793b9f.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>74b6s63p6l.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7953jerfzd.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>79pbpufp6p.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7fmhfwg9en.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7rz58n8ntl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>84993kbrcf.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>89z7zv988g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8m87ys6875.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8r8llnkz5a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>97r2b46745.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9b89h5y424.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9g2aggbj52.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9nlqeag3gk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9rd848q2bz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9vvzujtq5s.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9yg77x724h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a7xqa6mtl2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a8cz6cu7e5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>av6w8kgt66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>b9bk5wbcq9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>bmxgpxpgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>bvpn9ufa9b.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>bxvub5ada5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c3frkrj4fj.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cg4yq2srnc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cj5566h2ga.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cs644xg564.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dbu4b84rxf.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dkc879ngq3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>dzg6xy7pwj.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>eh6m2bh4zr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ejvt5qm6ak.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f73kdq92p3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f7s53z58qe.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>feyaarzu9v.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g28c52eehv.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>g2y4y55b64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ggvn48r87g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>glqzh8vgby.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta8lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gvmwg8q7h5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>h65wbv5k3f.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hb56zgv37p.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hdw39hrw9y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>k674qkevps.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>k6y4y55b64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbmxgpxpgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>krvm3zuq6h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>lr83yxwka7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m297p6643m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m5mvw97r93.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>m8dbw4sv7c.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mls7yz5dvl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mp6xlyr22a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mqn7fxpca7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mtkv5xtk9e.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n66cz3y3bx.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n6fk4nfna4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n9x2a789qt.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nu4557a4je.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>nzq8sh4pbs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>prcb7njmu6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pu4na253f3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwa73g5rt2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwdxu55a5a.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qqp299437r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qu637u8glc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>qwpu75vrh2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>r26jy69rpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>r45fhb6rf7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>rvh3l7un93.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>rx5hdcabgc.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s69wq72ugq.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>sczv5946wb.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>su67r6k2v3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t6d3zquu66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tl55sbb4fm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tmhh9296z4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tvvz7th9br.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>u679fj5vs4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v79kvwwj4g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vcra2ehyfk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vutu7akeur.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>w9q455wk68.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wg4vff78zm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wzmmZ9fp6w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x2jnk7ly8j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x44k69ngh6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x5l83yy675.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x8jxxk4ff5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>x8uqf25wch.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>xy9t38ct57.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y45688jllp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y5ghdn5j9k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yrqqpx2mcb.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>z24wtl6j62.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>z4gj7hsk7h.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zmvfpc5aq8.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zq492l623r.skadnetwork</string>
</dict>
</array>
copied to clipboard

Also, please add NSUserTrackingUsageDescription with your own description of why you would like to track user data (e.g. "App would like to access IDFA for tracking purpose") into info.plist
...
<key>NSUserTrackingUsageDescription</key>
<string>App would like to access IDFA for tracking purpose</string>
...
copied to clipboard
3. Using Plugin #
3.1 Initializing BidmadSDK
Performs tasks required to run BidmadSDK. The SDK won't allow ads to load unless you call the initializeSdk method.
The initializeSdk method receives the App Key that can be checked in ADOP Insight as a parameter. You can import the App Key by referring to the Find Your App Key guide.
Before loading ads, call the initializeSdk method as shown in the following example at the beginning of app execution.
if (foundation.defaultTargetPlatform == foundation.TargetPlatform.android) {
FlutterBidmadCommon().initializeSdk("ANDROID APP KEY");
} else if (foundation.defaultTargetPlatform == foundation.TargetPlatform.iOS) {
FlutterBidmadCommon().initializeSdk("IOS APP KEY");
}
copied to clipboard
Also, for v1.6.0 or above, you can receive a callback, indicating whether the initialization is successfully or unsuccessfully done.
FlutterBidmadCommon common = FlutterBidmadCommon();

if (foundation.defaultTargetPlatform == foundation.TargetPlatform.android) {
common.setInitializeCallbackListener(onInitialized: (bool isInitialized) {
print("Android Initialization Done: $isInitialized");
});
common.initializeSdkWithCallback("ANDROID APP KEY");
} else if (foundation.defaultTargetPlatform == foundation.TargetPlatform.iOS) {
common.setInitializeCallbackListener(onInitialized: (bool isInitialized) {
print("IOS Initialization Done: $isInitialized");
});
common.initializeSdkWithCallback("IOS APP KEY");
}
copied to clipboard
3.1 Banner AD
The following is an example of requesting a Banner ad.
3.1.1 Banner placement based on position
....//Banner init
FlutterBidmadCommon common = FlutterBidmadCommon();
FlutterBaseBanner banner;

common.initBannerChannel().then((value) {
String _channelNm = value;

banner = FlutterBaseBanner(
channelName: _channelNm
);

banner.setAdInfo("Your Zone Id");

banner.setCallbackListener(
onLoadAd: (BidmadInfo? info){
print("banner onLoadAd");
},
onFailAd: (String error){
print("banner onFailAd");
}
);

//option
//banner.setInterval(120); //banner refresh time(60s~120s)
});

....//Banner Load
banner.load(300); //set Position Y(height)

....//Banner Remove
banner.removeAdView();
copied to clipboard
3.1.2 Banner Widget
....//Banner Widget init
Container(
child: BidmadBannerWidget(
onBidmadBannerWidgetCreated: _onWidgetTestCreated,
),
height: 50.0, //Banner Height(50, 100, 250)
),

....//onBidmadBannerWidgetCreated
void _onWidgetTestCreated(FlutterBaseBanner controller){
controller.setAdInfo("Your Zone Id");

controller.setCallbackListener(
onLoadAd: (BidmadInfo? info){
print("banner onLoadAd");
},
onFailAd: (String error){
print("banner onFailAd");
}
);

controller.loadWidget();
}
copied to clipboard
3.1.3 Load the ad first and show the banner widget later (Supported only in v1.6.0 or later versions)
....//Load the banner ad first
FlutterBidmadCommon common = FlutterBidmadCommon();
FlutterBaseBannerRefined bannerAd;

common.initBannerRefinedChannel().then((chanNm) {
FlutterBaseBannerRefined.create(channelNm: chanNm, zoneId: "Your Zone Id").then((ad) {
bannerAd = ad;
bannerAd.setCallbackListener(
onLoadAd: (BidmadInfo? info) {
print("bannerAdWidget onLoad");
textView.text = "onLoadAd";
setState(() {
isLoaded = true;
});
},
onFailAd: (String error) {
print("bannerAdWidget onFailAd : "+error);
textView.text = "onFailAd";
},
onClickAd: (BidmadInfo? info) {
print("bannerAdWidget onClickAd");
textView.text = "onClickAd";
});
bannerAd.load();
});
});

....//Show the banner ad widget later by adding the Bidmad
Container(
child: isLoaded ? BidmadBannerRefinedWidget(ad: bannerAd) : Text("isLoading..."),
height: 50, // banner can have the height of 50, 100, 250
),
copied to clipboard
3.2 Interstitial AD
The following is an example of requesting a Interstitial ad.
....//Interstitial init
FlutterBidmadCommon common = FlutterBidmadCommon();
FlutterBaseInterstitial interstitial;

common.initInterstitialChannel().then((value) {
String _channelNm = value;

interstitial = FlutterBaseInterstitial(
channelName: _channelNm
);

interstitial.setAdInfo("Your Zone Id");

interstitial.setCallbackListener(
onLoadAd: (BidmadInfo? info){
print("interstitial onLoadAd");
},
onShowAd: (BidmadInfo? info){
print("interstitial onShowAd" );
interstitial.load(); //Ad Reload
},
onClickAd: (BidmadInfo? info){
print("interstitial onClickAd");
},
onCloseAd: (BidmadInfo? info){
print("interstitial onCloseAd");
},
onFailAd: (String error){
print("interstitial onFailAd");
}
);
});

....//Interstitial Load
interstitial.load();

....//Interstitial Show
interstitial.isLoaded().then((value){
if(value){
interstitial.show();
}
});
copied to clipboard
3.3 Reward AD
The following is an example of requesting a Reward ad.
....//Reward init
FlutterBidmadCommon common = FlutterBidmadCommon();
FlutterBaseReward reward;

common.initRewardChannel().then((value) {
String _channelNm = value;
reward = FlutterBaseReward(
channelName: _channelNm
);

reward.setAdInfo("Your Zone Id");

reward.setCallbackListener(
onLoadAd: (BidmadInfo? info){
print("reward onLoadAd");
},
onShowAd: (BidmadInfo? info){
print("reward onShowAd");

reward.load();
},
onCompleteAd: (BidmadInfo? info){
print("reward onCompleteAd");
},
onSkipAd: (BidmadInfo? info){
print("reward onSkippedAd");
},
onCloseAd: (BidmadInfo? info){
print("reward onCloseAd");
},
onClickAd: (BidmadInfo? info){
print("reward onClickAd");
},
onFailAd: (String error){
print("reward onFailAd");
}
);
});

....//Reward Load
reward.load();

....//Reward Show
reward.isLoaded().then((value){
if(value){
reward.show();
}
});
copied to clipboard
3.4 NativeAd Widget
Native ads are ad formats that are displayed to users through app-specific UI components.
Since the UI design unique to the internal app is required to display native ads, additional settings for Android and iOS are required to use this function.

Android Settings


Create an XML file by referring to XML Layout Setting Guide for Android.
Create a layout folder under the resource file and put the XML file in it.

Copy the name without the extension of the XML file you created and pass it to the BidmadNativeAdWidget constructor layoutName as shown below.
BidmadNativeAdWidget(
onBidmadNativeAdWidgetCreated: _onBidmadNativeAdWidgetCreated,
layoutName: "nativead_layout",
width: 400,
height: 400
),
copied to clipboard




iOS Settings


Create an XIB file by referring to XIB Layout Setting Guide for iOS.
Open Runner.xcworkspace.

Put the created XIB file under the project Runner folder inside the Navigation Area.

Copy the name without the extension of the XIB file you created and pass it to the BidmadNativeAdWidget constructor layoutName as shown below.
BidmadNativeAdWidget(
onBidmadNativeAdWidgetCreated: _onBidmadNativeAdWidgetCreated,
layoutName: "IOSNativeAd",
width: 400,
height: 400
),
copied to clipboard



Here's an example requesting native ads:
....// Banner Widget Init
Container(
child: BidmadNativeAdWidget(
onBidmadNativeAdWidgetCreated: _onBidmadNativeAdWidgetCreated,
layoutName:"YourXMLorXIBFileName", // Please enter the name of XIB or XML file
width: 400,
height: 400
),
),

....// After Banner Widget is fully created, the _onBidmadNativeAdWidgetCreated callback will be called
void _onBidmadNativeAdWidgetCreated(FlutterBaseNativeAd controller) {
controller.setAdInfo("Your Zone ID");

controller.setCallbackListener(
onLoadAd: (BidmadInfo? info) {
print("NativeAd onLoadAd");
},
onFailAd: (String error) {
print("NativeAd onFailAd" + error);
},
onClickAd: (BidmadInfo? info) {
print("NativeAd onClickAd");
}
);

controller.loadWidget();
}
copied to clipboard
3.5 ATT Functions
reqAdTrackingAuthorization() displays a popup, requesting for App Tracking Consent from user.
And the function will return set of number string values, showing the result.
FlutterBidmadCommon common = FlutterBidmadCommon();
common.reqAdTrackingAuthorization().then(
(value) {
switch (value) {
case "0":
print("App Tracking Not Determined");
break;
case "1":
print("App Tracking Restricted Authoriziation Status");
break;
case "2":
print("App Tracking Denied Authorization Status");
break;
case "3":
print("App Tracking Authorized Authorization Status");
break;
case "4":
print("user is on lower version than iOS 14");
break;
}
}
);
copied to clipboard
For App Tracking Not Determined, the function will return 0,
For App Tracking Restricted Authoriziation Status, the function will return 1,
For App Tracking Denied Authorization Status, the function will return 2,
For App Tracking Authorized Authorization Status the function will return 3,
and Lastly, if the user is on lower version than iOS 14 then it will return 4.
If you wish to obtain app tracking consent through a method other than what's provided by Plugin,
If the user agrees, True, and if rejected, pass False to setAdvertiserTrackingEnabled.
common.setAdvertiserTrackingEnabled(false);
print(common.getAdvertiserTrackingEnabled());
copied to clipboard
4. Plugin Interface #
4.1 FlutterBaseBanner
*Banner ads are handled through FlutterBaseBanner and this is a list of functions for that.



Function
Description




FlutterBaseBanner(String channelName)
This is the FlutterBaseBanner constructor, Receives the Name for Channel creation as a Param.


Future<void> load(int y)
Request a banner ad. When a banner ad is exposed, the banner is exposed at height y (center alignment).


Future<void> loadWidget()
Request a banner ad. In order for the function to function properly, FlutterBaseBanner object must be obtained through the BidmadBannerWidget Class.


Future<void> setInterval(int sec)
Set the banner refresh cycle.(60s~120s)


Future<void> setAdInfo(String zoneId)
Set the issued ZoneId.


Future<void> setCUID(String cuid)
Set the CUID property of each ad type. recommend encrypting text using sha256 or higher.


Future<void> hideBanner()
Hide the banner View


Future<void> showBanner()
Show the banner View.


Future<void> removeBanner()
Remove the exposed banner.


void Function(BidmadInfo? info) onLoadAd
If a listener is registered, the registered function is called when ad load.


void Function(String error) onFailAd
If a listener is registered, the registered function is called when ad load fail.



4.2 BidmadBannerWidget
*For banner ads in the form of a widget, it must be processed through BidmadBannerWidget, and this is a list of functions for that.



Function
Description




BidmadBannerWidget(    void Function(FlutterBaseBanner) onBidmadBannerWidgetCreated)
This is the BidmadBannerWidget constructor. After creating the widget, it receives a callback for processing.


void Function(FlutterBaseBanner) onBidmadBannerWidgetCreated
It is a callback that can receive a FlutterBaseBanner and handle banner related processing.



4.3 FlutterBaseBannerRefined
*Preloaded banner ads are handled through FlutterBaseBannerRefined, and this is a list of features.



Function
Description




Future<FlutterBaseBannerRefined> create(String channelNm, String zoneId)
ZoneID, the constructor of the class that initializes the channel name.


void load()
Call the "load" method.


void showBanner()
Call the "showBanner" method on the loaded ad.


void hideBanner()
Call the "hideBanner" method on the loaded ad.


void removeBanner()
Call the "removeBanner" method on the loaded ad.


void Function(BidmadInfo? info) onLoadAd
If a listener is registered, the registered function is called when ad load.


void Function(String error) onFailAd
If a listener is registered, the registered function is called when ad load fail.


void Function(BidmadInfo? info) onClickAd
If a listener is registered, the registered function is called when ad click.



4.4 BidmadBannerRefinedWidget
*This is a widget class to show the loaded FlutterBaseBannerRefined instance in the form of a widget.



Function
Description




BidmadBannerRefinedWidget(FlutterBaseBannerRefined ad)
FlutterBaseBannerRefined instance is passed and the loaded ad is added to the widget tree in the form of a widget.


void Function(Size)? onChangedSizeCallback
Returns the changed View size.



4.5 FlutterBaseInterstitial
*Interstitial ads are handled through FlutterBaseInterstitial and this is a list of functions for that.



Function
Description




FlutterBaseInterstitial(String channelName)
This is the FlutterBaseInterstitial constructor, Receives the Name for Channel creation as a Param.


Future<void> load()
Request a interstitial ad


Future<void> show()
Display the loaded interstitial ad


Future<bool> isLoaded()
Check if the ad is loaded.


Future<void> setAdInfo(String zoneId)
Set the issued ZoneId.


Future<void> setCUID(String cuid)
Set the CUID property of each ad type. recommend encrypting text using sha256 or higher.


void Function(BidmadInfo? info) onLoadAd
If a listener is registered, the registered function is called when ad load.


void Function(BidmadInfo? info) onShowAd
If a listener is registered, the registered function is called when ad show.


void Function(String error) onFailAd
If a listener is registered, the registered function is called when ad load fail.


void Function(BidmadInfo? info) onClickAd
If a listener is registered, the registered function is called when ad click.


void Function(BidmadInfo? info) onCloseAd
If a listener is registered, the registered function is called when ad close.



4.6 FlutterBaseReward
*Reward ads are handled through FlutterBaseReward and this is a list of functions for that.



Function
Description




FlutterBaseReward(String channelName)
This is the FlutterBaseReward constructor, Receives the Name for Channel creation as a Param.


Future<void> load()
Request a reward ad.


Future<void> show()
Display the loaded reward ad.


Future<bool> isLoaded()
Check if the ad is loaded.


Future<void> setAdInfo(String zoneId)
Set the issued ZoneId.


Future<void> setCUID(String cuid)
Set the CUID property of each ad type. recommend encrypting text using sha256 or higher.


void Function(BidmadInfo? info) onLoadAd
If a listener is registered, the registered function is called when ad load.


void Function(BidmadInfo? info) onShowAd
If a listener is registered, the registered function is called when ad show.


void Function(String error) onFailAd
If a listener is registered, the registered function is called when ad load fail.


void Function(BidmadInfo? info) onCompleteAd
If a listener is registered, the registered function is called when ad complate.


void Function(BidmadInfo? info) onCloseAd
If a listener is registered, the registered function is called when ad close.


void Function(BidmadInfo? info) onClickAd
If a listener is registered, the registered function is called when ad click.


void Function(BidmadInfo? info) onSkipAd
If a listener is registered, the registered function is called when ad skip.



4.7 BidmadNativeAdWidget
*Native ads are provided in the form of widgets and processed through BidmadNativeAdWidget. Below is a list of their features.



Function
Description




BidmadNativeAdWidget(    String layoutName,    void Function(FlutterBaseNativeAd) onBidmadNativeAdWidgetCreated,    double width,    double height)
BidmadNativeAdWidget Constructor. After creating a widget, receive a callback for processing as a param.


void Function(FlutterBaseNativeAd) onBidmadNativeAdWidgetCreated(FlutterBaseNativeAd controller)
Callback that can receive FlutterBaseNativeAd and handle native ad-related processing.



4.8 FlutterBaseNativeAd



Function
Description




Future<void> setAdInfo(String zoneId)
Set the issued ZoneId.


void Function(BidmadInfo? info) onLoadAd
If a listener is registered, the registered function will be called when the ad loads.


void Function(String error) onFailAd
If a listener is registered, the registered function will be called when the ad fails to load.


void Function(BidmadInfo? info) onClickAd
If a listener is registered, the registered function will be called when ad click.


Future<void> loadWidget()
Request a native ad.


Future<void> removeWidget()
Remove native ads.



4.9 FlutterBidmadCommon
*This is a list of functions available through BidmadCommon.



Function
Description




FlutterBidmadCommon()
This is the FlutterBidmadCommon constructor


Future<void> setDebugging(bool isDebug)
Debugging log output


Future<void> initializeSdk(String appKey)
Initialize the BidmadSDK support network. If you do not enter the appKey, advertisements will not be sent.


Future<void> setInitializeCallbackListener(onInitialized)
set the callback listener


Future<void> initializeSdkWithCallback(String appKey)
Initialize the BidmadSDK support network, receiving callback indicating the status


Future<void> setCUID(String cuid)
Enter your custom ID.


Future<String> initBannerChannel()
Creating a channel for controlling banner ad


Future<String> initInterstitialChannel()
Creating a channel for controlling interstitial ad


Future<String> initRewardChannel()
Creating a channel for controlling reward ad


Future<String> reqAdTrackingAuthorization()
Requesting for App Tracking Consent from user


Future<void> setAdvertiserTrackingEnabled(bool enable)
Setting ATT Setting manually


Future<bool> getAdvertiserTrackingEnabled()
Getting ATT Setting, true if consent and false if not consent



4.10 BidmadInfo
*Provide ad information about the ad through BidmadInfo returned from the callback.



Member
Description




String adNetworkName
The advertising network name. For example, Admob


String adType
The ad type. For example banner, interstitial, reward, native


Size? requestedBannerAdSize
The requested banner ad size. Included only in banner ad type.


Size? loadedBannerAdSize
The banner ad size that was actually loaded.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.