Android Issue : Violation of Interfering with Apps, Third-party Ads, or Device Functionality policy
เคยประสบปัญหาโดน Google Rejected App ด้วยเหตุผลว่า “Violation of Interfering with Apps, Third-party Ads, or Device Functionality policy” หรือ แบบง่ายๆคือ การแสดงโฆษณาขึ้นมาหลังจากที่ปิดแอปฯ หรือย่อแอปฯ หรือภายนอกแอปฯ นั่นเอง
ซึ่งจากที่ทดสอบมา สมมติว่าขณะที่แอปกำลังโหลดโฆษณา (Interstitial Ads) อยู่แล้วเราทำการกดปุ่ม Home เพื่อย่อแอปฯไปเบื้องหลัง ซึ่งในความเป็นจริงแล้วแอปฯ ก็ยังทำงานอยู่ในเบื้องหลัง (Background) นั่นเอง เพราะฉะนั้นเมื่อโหลดโฆษณาเสร็จ มันก็แสดงโฆษณาขึ้นมาเลย ทำให้ผิดกฎข้อนี้ไปโดยปริยาย
วิธีการป้องกันเบื้องต้นคือ ถ้าเราตรวจสอบสถานะของแอปก่อนจะแสดงโฆษณา ( mInterstitial.show();) ได้เราก็จะไม่ผิดกฎ วิธีการแบบง่ายโดยไม่ต้องลงไลบรารีเพิ่มคือ การเรียกใช้ฟังก์ชัน Callback ของ Android
ในที่นี้เราจะเรียกใช้ onPause() ฟังก์ชันนี้จะถูกเรียกอัตโนมัติเมื่อแอปฯเปลี่ยนสถานะจาก foreground ดังนี้
@Override protected void onPause() { super.onPause(); boolean isAppPause = true; }
จากตัวอย่างใน Activity ที่เรียก Interstitial Ads เราจะกำหนดค่า “isAppPause” เป็น true เมื่อสถานะแอปฯ onPause. ดังนั้น ก่อนที่เราจะทำการแสดงโฆษณา เราเช็คได้ดังนี้
…
@Override public void onAdLoaded() { if (!isAppPause) mInterstitial.show(); else { // do something if not show ads // ; } }