全部產品
Search
文件中心

Mobile Platform as a Service:配置啟動頁

更新時間:Jul 13, 2024

啟動頁廣告又稱開屏廣告。啟動頁(也稱為閃屏/開屏 Splash)是在應用啟動之後,系統 LaunchScreen 結束時展示,應用首頁出現時消失。

在用戶端配置啟動頁後,您可以在控制台側配置 Splash 展位資訊與廣告內容(參見 建立展位建立活動),應用根據配置擷取展位投放資料並進行展示,實現了投放資料的動態下發與展示。

說明

由於投放資料的下載是非同步過程,為了不阻塞應用的啟動,配置啟動頁的投放後,首次僅執行下載操作,將圖片緩衝到本地,下一次應用啟動時才會展示上一次緩衝的圖片。

基於 mPaaS 架構(關於 mPaaS 架構的詳細介紹,參見 mPaaS 架構介紹)下,啟動頁的時序和原理如下:

  1. 架構啟動時會建立 bootloader,管理應用的主 window。

  2. 展示啟動頁時,架構會自動完成 window 的切換,並將建立的啟動頁 window 返回給使用者。

  3. 當 bootloader 啟動完成並且 Launcher 微應用展示完成時,將關閉啟動頁,此時再切換回主 window。

前置條件

確保已正確啟動智能投放組件,操作參見 啟動組件

操作步驟

在 mPaaS 架構自動產生的架構分類檔案 DTFrameworkInterface+MPCDPDemo_plugin.m 中(如下圖所示),完成以下配置:

  1. 聲明靜態變數來持有啟動頁的 window 對象。

     static UIWindow *splashScreenWindow;
  2. 在架構分類檔案的 application:handleDidFinishLaunchingWithOptions: 方法中,實現啟動頁廣告的邏輯並開啟啟動頁。

     - (DTFrameworkCallbackResult)application:(UIApplication *)application handleDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
         // 廣告邏輯
       // 查看啟動頁是否存在
         BOOL showSplashWindow = YES;
       showSplashWindow = splashScreenExist(showSplashWindow);
         if (showSplashWindow) {
             __weak typeof(self) weakSelf = self;
         // 開啟啟動頁
             splashScreenWindow = APSplashScreenStart(^{
             // 啟動頁關閉的回調
                 [weakSelf splashScreenDidDismiss];
             });
         }
    
         return DTFrameworkCallbackResultContinue;
     }
  3. 實現啟動頁關閉的邏輯。 包括切換應用主 window,釋放啟動頁 window 以及發送啟動頁結束的通知(可選)。

     - (void)splashScreenDidDismiss {
         // 將應用主 window 還原為 key window
         [DTContextGet().window makeKeyAndVisible];
         [self performSelector:@selector(doDismiss) withObject:nil afterDelay:0.0];
     }
    
     - (void)doDismiss {
         // 釋放啟動頁對象
         splashScreenWindow.rootViewController = nil;
         splashScreenWindow = nil;
         [self notifySplashScreenDismiss];
     }
    
     - (void)notifySplashScreenDismiss {
         // 閃屏結束通知,處理其它邏輯(可選)
         [[NSNotificationCenter defaultCenter] postNotificationName:@"kSplashScreenDidDismiss" object:nil];
     }
  4. 在架構啟動載入完成後,通知架構啟動頁即將關閉。 建議在 application:afterDidFinishLaunchingWithOptions: 方法中調用。

     - (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
         APWillKillSplashScreen();
       // ...
     }
  5. 在首頁 ViewController 啟動後發送通知,真正關閉啟動頁。 ViewController 通常為 Launcher 微應用的 rootViewController,如果是 TabBarController,則為第一個 tab 所在的 ViewController

     @implementation HomeViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
     }
    
     - (void)viewDidAppear:(BOOL)animated {
         [super viewDidAppear:animated];
         // 通知 Launcher 已經展示
         [[NSNotificationCenter defaultCenter] postNotificationName:@"kNotificationLauncherDidAppear" object:nil];
     }
     @end

相關連結

啟動頁相關介面說明參見 API 說明