美文网首页
iOS Facebook sdk 接入指南(AEM)

iOS Facebook sdk 接入指南(AEM)

作者: IT言 | 来源:发表于2024-03-25 11:07 被阅读0次

    聚合事件测量(Aggregated Event Measurement,简称AEM)

    您可以使用聚合事件测量(AEM)来测量那些已选择退出应用跟踪的iOS 14.5+用户的应用程序事件。您可以通过使用Facebook SDK for iOS来集成AEM。

    使用Facebook SDK

    步骤1:设置您的开发环境

    按照“入门指南 - iOS”中的说明进行操作,直到第五步。当您到达第六步时,请返回本页面并继续进行第二步。

    步骤2:支持iOS通用链接

    通过满足支持iOS通用链接的先决条件,来支持深度链接到您的移动应用。

    步骤3:连接您的应用程序代理和场景代理

    当您支持iOS通用链接时,使用以下方法来与AEM集成。

    iOS v14.0.0及以后版本的Facebook SDK

    为了确保您的应用能够正确支持通过通用链接的应用广告中的深度链接,请在您的应用程序代理中实现application(:continue:restorationHandler:),并从您的实现中调用ApplicationDelegate.shared.application(_:continue:)。您的代码可能如下所示:

    func application(_ application: UIApplication,
                       continue userActivity: NSUserActivity,
                       restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
                     ) -> Bool
    {
      ApplicationDelegate.shared.application(application, continue: userActivity)
      
      // 实现的其余部分...
      
      return true
    }
    

    如果您的应用选择了场景,那么在scene(:continue:)和scene(:willConnectTo:options:)中添加以下代码:

    func scene(_ scene: UIScene,
                 continue userActivity: NSUserActivity
               )
    {
      ApplicationDelegate.shared.application(.shared, continue: userActivity)
      
      // 实现的其余部分...
    }
      
      
    func scene(_ scene: UIScene,
                 willConnectTo session: UISceneSession,
                 options connectionOptions: UIScene.ConnectionOptions
               )
    {
      if let userActivity = connectionOptions.userActivities.first,
             userActivity.activityType == NSUserActivityTypeBrowsingWeb
      {
        ApplicationDelegate.shared.application(.shared, continue: userActivity)
      }
      
      // 实现的其余部分...
    }  
    

    iOS v13.2.0及更早版本的Facebook SDK

    为了确保您的应用能够正确支持通过通用链接的应用广告中的深度链接,请在您的应用程序代理中实现application(:continue:restorationHandler:),并从您的实现中调用ApplicationDelegate.shared.application(_:open:options:)。您的代码可能如下所示:

    func application(_ application: UIApplication,
                       continue userActivity: NSUserActivity,
                       restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
                    ) -> Bool
    {
      if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
         let url = userActivity.webpageURL
      {
        ApplicationDelegate.shared.application(application, open: url, options: [:])
      }
      
      // 实现的其余部分...
    
      return true
    }
    

    如果您的应用选择了场景,那么在scene(:continue:)和scene(:willConnectTo:options:)中添加以下代码:

    func scene(_ scene: UIScene,
                 continue userActivity: NSUserActivity
               )
    {
      if let url = userActivity.webpageURL,
         userActivity.activityType == NSUserActivityTypeBrowsingWeb
      {
        ApplicationDelegate.shared.application(.shared, open: url, options: [:])
      }
        
      // 实现的其余部分...
    }
      
      
    func scene(_ scene: UIScene,
                 willConnectTo session: UISceneSession,
                 options connectionOptions: UIScene.ConnectionOptions
              )
    {
      if let userActivity = connectionOptions.userActivities.first,
         let url = userActivity.webpageURL,
         userActivity.activityType == NSUserActivityTypeBrowsingWeb
      {
        ApplicationDelegate.shared.application(.shared, open: url, options: [:])
      }
    
      // 实现的其余部分...
    }
    

    当您在移动应用中使用自定义URL以支持AEM时
    将AppDelegate.swift方法中的代码替换为以下代码。这段代码在您的应用启动时初始化SDK,并将深度链接URL传递给SDK。即使是在冷启动时打开应用,重新参与广告中的深度链接URL也应该传递给iOS SDK。

    如果您是程序化设置Facebook应用ID,请在SDK初始化前设置应用ID。
    // AppDelegate.swift

    import UIKit
    import FBSDKCoreKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate
    {    
      func application(_ application: UIApplication,
                       didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
                       ) -> Bool
      {  
        // 如果您已在info.plist中配置了应用ID,则不需要设置应用ID
        Settings.shared.appID  = APP_ID    
    
        // 初始化iOS SDK
        ApplicationDelegate.shared.application
        (
          application,
          didFinishLaunchingWithOptions: launchOptions
        )
    
        return true
      }
      
    
      func application(_ app: UIApplication,
                       open url: URL,
                       options: [UIApplication.OpenURLOptionsKey : Any] = [:]
                       ) -> Bool
      {
        // 将深度链接URL传递给iOS SDK
        ApplicationDelegate.shared.application
        (
          app,
          open: url,
          sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
          annotation: options[UIApplication.OpenURLOptionsKey.annotation]
        )
      }  
    }
    

    iOS 13将打开URL的功能移动到了SceneDelegate。如果您使用的是iOS 13,请在您的SceneDelegate中添加以下方法:

    // SceneDelegate.swift

    import FBSDKCoreKit
      ...
    func scene(_ scene: UIScene, 
               openURLContexts URLContexts: Set<UIOpenURLContext>
               )
    {
      guard let url = URLContexts.first?.url else
      {
        return
      }
    
      // 将深度链接URL传递给iOS SDK
      ApplicationDelegate.shared.application
      (
        UIApplication.shared,
        open: url,
        sourceApplication: nil,
        annotation: [UIApplication.OpenURLOptionsKey.annotation]
      )
    }
    

    步骤3:添加应用事件

    要添加您想要跟踪的应用事件,请按照“入门指南 - iOS”中的说明从第七步开始操作。

    相关文章

      网友评论

          本文标题:iOS Facebook sdk 接入指南(AEM)

          本文链接:https://www.haomeiwen.com/subject/iwmdtjtx.html