AppLovin SDK v11.5.0 引入了应用开屏广告格式。 应用开屏广告与插屏广告类似,但会在用户热启动或冷启动应用时展示:
不支持 Fire OS 应用。
在采用开屏广告格式时,请始终考虑用户留存问题。
针对应用开屏广告,您可以选择多种实施策略。
AppLovin recommends that you test by using one or more of the techniques described below. Each application has a unique configuration that allows it to maximize revenue without impacting retention or time spent in the app. User behavior and engagement may change, so AppLovin recommends that you retest your App Open Ads strategies often. Some implementation techniques you may use to test App Open Ads include:
为确保在应用转到前台时应用开屏广告已准备就绪,您需要预加载 MAAppOpenAd。
创建一种在广告就绪时显示它的方法。
在 applicationDidBecomeActive: 中调用该方法。
然后,您的应用会尝试在应用打开时展示广告,或在未预加载广告的情况下加载广告。
请求广告与收到要展示的广告之间可能存在时间差。 这种延迟可能会导致用户先短暂看到您的应用,然后突然看到完全无关的广告。 这种现象会损害用户体验,因此应该避免。 处理冷启动的首选方法是在展示任何应用初始内容之前使用加载界面,并从加载界面显示广告。 如果应用在加载界面后显示了任何应用内容,则不要展示广告。
您可以在应用开屏广告展示前显示一个加载界面,并且在广告被关闭之前结束加载界面。
在这种情况下,您可以在 didHide 方法中关闭加载界面。
这些代码示例假设只有在“热启动”,即应用在内存中挂起时,展示开屏广告。 启动/加载界面不包括在内。 应用开发者必须自行处理启动/加载界面,请参阅 最佳实现。
@interface AppDelegate()<MAAdDelegate>
@property (nonatomic, strong) MAAppOpenAd *appOpenAd;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[ALSdk shared] initializeSdkWithCompletionHandler:^(ALSdkConfiguration *configuration) {
self.appOpenAd = [[MAAppOpenAd alloc] initWithAdUnitIdentifier: @"«ad-unit-ID»"];
self.appOpenAd.delegate = self;
[self.appOpenAd loadAd];
}]
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[self showAdIfReady];
}
- (void)showAdIfReady
{
if ( ![[ALSdk shared] isInitialized] )
{
return;
}
if ( [self.appOpenAd isReady] )
{
[self.appOpenAd showAdForPlacement: @"«test-placement-ID»"];
}
else
{
[self.appOpenAd loadAd];
}
}
- (void)didLoadAd:(MAAd *)ad {}
- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error {}
- (void)didDisplayAd:(MAAd *)ad {}
- (void)didClickAd:(MAAd *)ad {}
- (void)didHideAd:(MAAd *)ad
{
[self.appOpenAd loadAd];
}
- (void)didFailToDisplayAd:(MAAd *)ad withError:(MAError *)error
{
[self.appOpenAd loadAd];
}
@end
@UIApplicationMain
class AppDelegate: UIApplicationDelegate
{
private lazy var appOpenAd = MAAppOpenAd(adUnitIdentifier: "«ad-unit-ID»")
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
{
ALSdk.shared().initializeSdk { (configuration: ALSdkConfiguration) in
appOpenAd.delegate = self
appOpenAd.load()
}
return true
}
func applicationDidBecomeActive(_ application: UIApplication)
{
showAdIfReady()
}
private func showAdIfReady()
{
if ALSdk.shared().isInitialized
{
return
}
if appOpenAd.isReady
{
appOpenAd.show(forPlacement: "«test-placement-ID»")
}
else
{
appOpenAd.load()
}
}
}
extension AppDelegate : MAAdDelegate
{
func didLoad(_ ad: MAAd) {}
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) {}
func didDisplay(_ ad: MAAd) {}
func didClick(_ ad: MAAd) {}
func didHide(_ ad: MAAd)
{
appOpenAd.load()
}
func didFail(toDisplay ad: MAAd, withError error: MAError)
{
appOpenAd.load()
}
}| 广告渠道 | 最低适配器版本 |
|---|---|
| Google Bidding 和 Google AdMob | 10.9.0.1 |
| Liftoff Monetize | 6.12.0.3 |
| Mintegral | 7.2.3.0.1 |
| Pangle | 4.6.2.2.1 |