The Audience Network allows you to monetize your Android apps with Facebook ads. An interstitial ad is a full screen ad that you can show in your app. Typically interstitial ads are shown when there is a transition in your app. For example -- after finishing a level in a game or after loading a story in a news app.
อย่าลืมดูคู่มือเริ่มต้นใช้งาน Audience Network และเริ่มต้นใช้งาน Android ก่อนดำเนินการต่อ
ระบบได้เพิ่มเมธอดนี้ใน Android Audience Network SDK เวอร์ชั่น 5.1
การเริ่มต้นของ Audience Network Android SDK ที่ชัดเจนเป็นข้อบังคับตั้งแต่เวอร์ชั่น 5.3.0
ขึ้นไป โปรดดูเอกสารนี้เกี่ยวกับวิธีการเริ่มต้น Audience Network Android SDK
คุณควรเริ่มต้น Audience Network SDK ก่อนที่จะสร้างอ็อบเจ็กต์โฆษณาและโหลดโฆษณา ขอแนะนำให้ดำเนินการเช่นนี้ในการเปิดใช้แอพ
public class YourApplication extends Application { ... @Override public void onCreate() { super.onCreate(); // Initialize the Audience Network SDK AudienceNetworkAds.initialize(this); } ... }
Add the following code at the top of your Activity in order to import the Facebook Ads SDK:
import com.facebook.ads.*;
Initialize the InterstitialAd
.
private InterstitialAd interstitialAd; @Override public void onCreate(Bundle savedInstanceState) { ... // Instantiate an InterstitialAd object. // NOTE: the placement ID will eventually identify this as your App, you can ignore it for // now, while you are testing and replace it later when you have signed up. // While you are using this temporary code you will only get test ads and if you release // your code like this to the Google Play your users will not receive ads (you will get a no fill error). interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID"); ...
InterstitialAdListener
, load the Ad and show the Ad immediately it is loaded successfully.public class InterstitialAdActivity extends Activity { private final String TAG = InterstitialAdActivity.class.getSimpleName(); private InterstitialAd interstitialAd; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Instantiate an InterstitialAd object. // NOTE: the placement ID will eventually identify this as your App, you can ignore it for // now, while you are testing and replace it later when you have signed up. // While you are using this temporary code you will only get test ads and if you release // your code like this to the Google Play your users will not receive ads (you will get a no fill error). interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID"); // Create listeners for the Interstitial Ad InterstitialAdListener interstitialAdListener = new InterstitialAdListener() { @Override public void onInterstitialDisplayed(Ad ad) { // Interstitial ad displayed callback Log.e(TAG, "Interstitial ad displayed."); } @Override public void onInterstitialDismissed(Ad ad) { // Interstitial dismissed callback Log.e(TAG, "Interstitial ad dismissed."); } @Override public void onError(Ad ad, AdError adError) { // Ad error callback Log.e(TAG, "Interstitial ad failed to load: " + adError.getErrorMessage()); } @Override public void onAdLoaded(Ad ad) { // Interstitial ad is loaded and ready to be displayed Log.d(TAG, "Interstitial ad is loaded and ready to be displayed!"); // Show the ad interstitialAd.show(); } @Override public void onAdClicked(Ad ad) { // Ad clicked callback Log.d(TAG, "Interstitial ad clicked!"); } @Override public void onLoggingImpression(Ad ad) { // Ad impression logged callback // Please refer to Monetization Manager or Reporting API for final impression numbers Log.d(TAG, "Interstitial ad impression logged!"); } }; // For auto play video ads, it's recommended to load the ad // at least 30 seconds before it is shown interstitialAd.loadAd( interstitialAd.buildLoadAdConfig() .withAdListener(interstitialAdListener) .build()); } }
Interstitial Ads have creatives that are larger in size so a good practice is calling loadAd(...)
in advance and then calling show()
at the appropriate time.
In case of not showing the ad immediately after the ad has been loaded, the developer is responsible for checking whether or not the ad has been invalidated. Once the ad is successfully loaded, the ad will be valid for 60 mins. You will not get paid if you are showing an invalidated ad.
You should follow the idea below, but please do not copy the code into your project since it is just an example:
public class InterstitialAdActivity extends Activity { private InterstitialAd interstitialAd ; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Instantiate an InterstitialAd object. // NOTE: the placement ID will eventually identify this as your App, you can ignore it for // now, while you are testing and replace it later when you have signed up. // While you are using this temporary code you will only get test ads and if you release // your code like this to the Google Play your users will not receive ads (you will get a no fill error). interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID"); InterstitialAdListener interstitialAdListener = new InterstitialAdListener() { ... }; // load the ad interstitialAd.loadAd( interstitialAd.buildLoadAdConfig() .withAdListener(interstitialAdListener) .build()); } private void showAdWithDelay() { /** * Here is an example for displaying the ad with delay; * Please do not copy the Handler into your project */ // Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { // Check if interstitialAd has been loaded successfully if(interstitialAd == null || !interstitialAd.isAdLoaded()) { return; } // Check if ad is already expired or invalidated, and do not show ad if that is the case. You will not get paid to show an invalidated ad. if(interstitialAd.isAdInvalidated()) { return; } // Show the ad interstitialAd.show(); } }, 1000 * 60 * 15); // Show the ad after 15 minutes } }
Finally, add the following code to your Activity's onDestroy()
function to release resources the InterstitialAd
uses:
@Override protected void onDestroy() { if (interstitialAd != null) { interstitialAd.destroy(); } super.onDestroy(); }
หากคุณใช้โปรแกรมจำลอง Google Android คุณจะต้องเพิ่มบรรทัดโค้ดต่อไปนี้ก่อนโหลดโฆษณาทดสอบ:AdSettings.addTestDevice("HASHED ID");
ใช้ ID แฮชซึ่งมีการพิมพ์บันทึกไว้ใน Logcat ขณะที่คุณทำการส่งคำขอเพื่อโหลดโฆษณาบนอุปกรณ์เป็นครั้งแรก
Genymotion และอุปกรณ์จริงไม่จำเป็นต้องทำขั้นตอนนี้ หากคุณต้องการทดสอบด้วยโฆษณาจริง โปรดดูคู่มือการทดสอบ
Start your app and you should see an Interstitial Ad appear:
ในการแสดงโฆษณาแบบวิดีโอใน Audience Network การแสดงผลแบบเร่งฮาร์ดแวร์จะต้องเปิดใช้งาน ไม่เช่นนั้นคุณอาจเห็นหน้าจอดำในการรับชมวิดีโอ ซึ่งมีผลกับ
การเร่งฮาร์ดแวร์จะเปิดใช้งานตามค่าเริ่มต้นหากระดับ API เป้าหมายของคุณเท่ากับ 14 ขึ้นไป (Ice Cream Sandwich, Android 4.0.1) แต่คุณยังสามารถเปิดใช้งานคุณสมบัตินี้ในระดับแอพพลิเคชั่นหรือระดับกิจกรรมด้วยตนเองได้ด้วย
ในไฟล์รายงาน Android ของคุณ เพิ่มแอตทริบิวต์ต่อไปนี้ไปยังแท็ก <application>
เพื่อเปิดใช้งานการเร่งฮาร์ดแวร์สำหรับแอพพลิเคชั่นทั้งหมดของคุณ:
<application android:hardwareAccelerated="true" ...>
หากคุณต้องการเปิดใช้งานคุณสมบัติสำหรับกิจกรรมที่เฉพาะเจาะจงในแอพพลิเคชั่นของคุณเท่านั้น ในไฟล์รายงาน Android ของคุณ คุณสามารถเพิ่มคุณสมบัติต่อไปนี้ไปยังแท็ก <activity>
ตัวอย่างต่อไปนี้จะเปิดใช้งานการเร่งฮาร์ดแวร์สำหรับ AudienceNetworkActivity
ซึ่งใช้ในการแสดงผลโฆษณาคั่นและวิดีโอที่มีรางวัลหลังชมจบ:
<activity android:name="com.facebook.ads.AudienceNetworkActivity" android:hardwareAccelerated="true" .../>
Relevant code samples in both Swift and Objective-C are available on our GitHub sample app respository
Test your ads integration with your app.
As soon as we receive a request for an ad from your app or website, we'll review it to make sure it complies with Audience Network policies and the Facebook community standards