Show Menu
主題×

iOS - 設定行動應用程式

Adobe Target 行動應用程式可視化體驗撰寫器 (VEC) 可讓開發人員在其 iOS 行動應用程式上執行一次性設定,並能讓行銷人員使用行動應用程式 VEC 的功能。
如需有關啟用 Adobe Target VEC 擴充功能的詳細資訊,請參閱 Adobe Experience Platform Mobile SDK 中的 Adobe Target - 可視化體驗撰寫器

包含 Mobile SDK 和 Target 資料庫

  1. 藉由新增窗格「 ACPTargetVEC 」,透過 Cocoapods Podfile 將資料庫新增到專案。
  2. 在 XCode 中開啟 Objective-C 應用程式專案。
  3. 前往專案建置設定,將「一律內嵌 Swift 標準資料庫」設定為「是」(如果您尚未設定的話)。
  4. 在專案建置設定中找出「其他連結器旗標」(Other linker flags),然後新增 $(inherited) (如果不存在的話)。
  5. 針對 objective-C 專案 - 建立 Swift 檔案以建立橋接標頭。它會為您設定 Swift 應用程式環境。
  6. 新增深層連結處理常式:
    1. 在您的應用程式專案設定中,按一下​ 「資訊」
    2. URL 類型 ​下,按一下三角形以將其開啟,然後按一下「加號」以新增欄位。
    3. 新增下列資訊:
      • 識別碼: com.adobe.sdktest
      • URL 配置: vectester
      • 角色: 編輯者
    4. 按一下離開您的應用程式專案設定 > 「一般」
    5. 按一下返回您的應用程式專案設定 > 「資訊」,確保已儲存您的設定。
      有了範例 URL 類型,您應用程式的 URL 配置將會:
      vectester://com.adobe.sdktest
      
      
  7. 在 XCode 中,開啟 AppDelegate 檔案。
  8. 在檔案頂端,在匯入的結尾新增下列文字行:
    #import "ACPTargetVEC.h"
    如果您正在使用 Swift,請新增以下文字行:
    import ACPTargetVEC
  9. 在您的 AppDelegate 檔案中,將下列行加入 AppDelegate::application:didFinishLaunchingWithOptions: 。如果未定義委派函式,請建立該函式,並針對 Objective-C 或 Swift 應用程式個別加入下列行:
    // CONFIGURATION LINE FOR OBJECTIVE C ONLY
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      //Other Extensions that you need
      [ACPCore configureWithAppId:@"YOUR_ADOBE_LAUNCH_APP_ID"];
      [ACPCore setLogLevel:ACPMobileLogLevelDebug];
      [ACPTarget registerExtension];
      [ACPTargetVEC registerExtension];
      [ACPCore start:^{
        [ACPCore lifecycleStart:nil];
      }];
      // Override point for customization after application launch.
      return YES;
    }
    
    // CONFIGURATION LINE FOR SWIFT ONLY: 
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
      //Other Extensions that you need
      ACPCore.configure(withAppId: "YOUR_ADOBE_LAUNCH_APP_ID")
      ACPCore.setLogLevel(ACPMobileLogLevel.debug)
      ACPTarget.registerExtension()
      ACPTargetVEC.registerExtension()
      [ACPCore start:^{
        [ACPCore lifecycleStart:nil];
      }];
      return true
    }
    
    
  10. 將下列行加入 AppDelegate:application:openURL 。如果未定義委派函式,請建立該函式,並加入下列行。
    // URL HANDLER LINE FOR OBJECTIVE C ONLY: 
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options {
      [ACPCore collectLaunchInfo:@ {@"adb_deeplink": url.absoluteString}];
      return YES;
    }
    
    // URL HANDLER LINE FOR SWIFT ONLY: 
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
      ACPCore.collectLaunchInfo(["adb_deeplink": url.absoluteString])
      return true
    }
    
    
    建置並執行您的應用程式,並使用該應用程式來測試行動應用程式 VEC 功能。

在您的行動應用程式中設定目標檢視

Adobe Mobile SDK 公開一種新方法,供開發人員在每次呈現新檢視時觸發。請參閱有關如何為 iOS 應用程式正確插入目標檢視 API 呼叫的一般準則。在 iOS 中,所有「目標檢視」都是按它們出現的 UIViewController 所定義。因此,不同於 Android, TargetViews 的插入僅限於下列呼叫。
Adobe 行動應用程式 VEC 擴充功能會根據子類別 UIViewController 的類別名稱自動產生 UIViewControllers 的名稱,以在行動應用程式 VEC 架構中互動。如果您想置換這些名稱,您可以使用 ViewController viewWillAppear 呼叫下列方法。
// TARGET VIEW LINE FOR OBJECTIVE C ONLY 
[ACPTargetVEC setTargetView:@"exampleViewController"]; 
   
// TARGET VIEW LINE FOR SWIFT ONLY 
ACPTargetVEC.setTargetView("exampleViewController")

Adobe Mobile SDK 也公開一種替代方法,供開發人員在執行階段鎖定自訂檢視。身為開發人員,您必須確保檢視已命名唯一名稱。先呼叫下列方法,然後再將檢視新增至 superview :
// EXAMPLE TARGET VIEW FOR A CUSTOM VIEW IN OBJECTIVE C 
CustomPopupView *popupView = [[CustomPopupView alloc] initWithFrame:CGRectMake(0, 0, 300, 200)]; 
[ACPTargetVEC setTargetView:@"myCustomPopupView" forView:popupView];

// EXAMPLE TARGET VIEW FOR A CUSTOM VIEW IN SWIFT 
let popupView = CustomPopupView.init(frame: CGRect(x: 0, y: 0, width: 300, height: 200)) 
ACPTargetVEC.setTargetView("myCustomPopupView", for: popupView)

設定設定檔參數和其他全域參數

現在,我們支援設定會在每個和所有 API 呼叫中傳遞的全域參數,並支援將 mbox/檢視參數傳遞至相應的檢視。
參數包括:
  • mbox/檢視參數
  • 設定檔參數
  • 產品參數
  • 訂單參數
全域參數支援:
//For Objective-c 
NSDictionary *mboxParams = @{@"mboxparam1":@"mboxvalue1"}; //mbox or view params 
NSDictionary *profileParams = @{@"profilekey1":@"profilevalue1"}; //profile params 
  
ACPTargetProduct *product = [ACPTargetProduct targetProductWithId:@"1234" categoryId:@"furniture"]; 
ACPTargetOrder *order = [ACPTargetOrder targetOrderWithId:@"12343" total:@(123.45) purchasedProductIds:@[@"100",@"200"]]; 
ACPTargetParameters *targetParams = [ACPTargetParameters targetParametersWithParameters: mboxParams
                      profileParameters: profileParams
                      product: product
                      order: order];
[ACPTargetVEC setGlobalRequestParameters:targetParams];

//For Swift 
var mboxParams = ["mboxparam1":"mboxvalue1"] 
var profileParams = ["profilekey1":"profilevalue1"] 
var product = ACPTargetProduct(id: "1234", categoryId: "furniture")
var order = ACPTargetOrder(id: "12345", total: 123.45, purchasedProductIds: ["100", "200"])
var targetParams = ACPTargetParameters(parameters: mboxParams, profileParameters: profileParams, product: product, order: order)
ACPTargetVEC.setGlobalRequest(targetParams)

傳遞下一個檢視觸發的參數:
我們提供了一些根據預設建立的自動檢視,例如應用程式中存在之每個檢視控制器的「 AUTO_<viewControllerName> 」若要傳遞這些參數,您可以呼叫下列 API:
//For Objective-c 
NSDictionary *mboxParams = @{@"viewparam1":@"viewvalue1"}; //mbox or view params 
NSDictionary *profileParams = @{@"profilekeyforview1":@"profilevalueforview1"}; //profile params 
  
ACPTargetProduct *product = [ACPTargetProduct targetProductWithId:@"1234" categoryId:@"furniture"]; 
ACPTargetOrder *order = [ACPTargetOrder targetOrderWithId:@"12343" total:@(123.45) purchasedProductIds:@[@"100",@"200"]]; 
ACPTargetParameters *targetParams = [ACPTargetParameters targetParametersWithParameters:mboxParams 
                                                                      profileParameters:profileParams 
                                                                                product:product 
                                                                                  order:order]; 
[ACPTargetVEC setGlobalRequestParameters:targetParams];

//For Swift 
var mboxParams = ["mboxparam1":"mboxvalue1"] 
var profileParams = ["profilekey1":"profilevalue1"] 
var product = ACPTargetProduct(id: "1234", categoryId: "furniture")
var order = ACPTargetOrder(id: "12345", total: 123.45, purchasedProductIds: ["100", "200"])
var targetParams = ACPTargetParameters(parameters: mboxParams, profileParameters: profileParams, product: product, order: order)
ACPTargetVEC.setRequest(targetParams)

將參數傳遞至特定檢視:
我們已經看過 API 透過 TargetVEC.targetView("view_name") 傳遞至觸發檢視。您也可以傳遞專屬於特定檢視的參數,如下所示:
//For Objective-c 
[ACPTargetVEC setTargetView:@"VIEW_NAME" withParameters:TARGET_PARAMS];

//FOR SWIFT 
ACPTargetVEC.setTargetView("VIEW_NAME", with: TARGET_PARAMS)

明確地呼叫預先擷取 API

在某些情況下,您可能會想再次呼叫預先擷取 API,以重新整理快取中儲存的選件。下列已公開的 API 為:
預先擷取選件:
/** 
 * Prefetch all offers for all views in the cache. It will remove existing offers and changes for the current view will be 
 refreshed only when the view is triggered. This call happens on the main thread blocking the UI. 
 */ 
+ (void) prefetchOffers;

在背景預先擷取選件:
/** 
 * Prefetch all offers for all views in the cache. It will remove existing offers and changes for the current view will be 
 refreshed only when the view is triggered. This call happens on the background thread so doesn't block UI. 
 */ 
+ (void) prefetchOffersBackground;

教學課程: 在 Mobile iOS Objective-C 和 Swift 應用程式中實作 Experience Cloud

完成這些教學課程之後,您將能:
  • 建立行動 Launch 屬性
  • 在 Objective-C 或 Swift 應用程式中安裝 Launch 屬性
  • 實作下列 Adobe Experience Cloud 解決方案:
    • Experience Cloud ID 服務
    • Adobe Target
    • Adobe Analytics
    • Adobe Audience Manager
  • 透過開發、測試和生產環境在 Launch 中發佈變更