iOS中的分支Deeplink处理

什么是Deeplink?

在移动应用程序的上下文中, 深层链接是由统一资源标识符(URI)组成的URL,该URL链接到移动应用程序中的特定位置,而不仅仅是启动应用程序。

为什么要深层链接?

  • 通过网站推广移动应用
  • 最佳用户体验
  • 通过广告横幅展示营销
  • 通过吸引用户使用定制的电子邮件来进行电子邮件营销

延迟深层链接!!

延迟深度链接是移动深度链接的各个方面之一,它描述了深度链接到尚未安装的应用程序的原理。 在这种情况下,深度链接将被“推迟”,直到用户安装该应用程序为止。 单击延迟的深层链接后,它将导航到App Store / Play商店,并且在安装应用程序后,它将导航到应用程序内的特定位置。 如果已经安装了应用程序,它将直接启动该应用程序,并打开该应用程序内的特定位置。

通用链接!

从iOS 9开始,Apple引入了通用链接。 单击通用链接时,iOS会检查是否已安装支持链接的应用程序并打开相应的应用程序,否则将在Web浏览器中打开URL(链接)。 (对于运行9.0之前的iOS版本的用户,点击通用链接可在默认Web浏览器中打开该链接)

使用Branch SDK在iOS中集成延迟的深度链接

步骤1:安装Branch SDK

  • 使用 CocoaPods
 平台:ios,“ 10.0” 
 目标“ APP_NAME” 
use_frameworks!
吊舱“分支”
 结束 

然后运行“ pod install”

  • 使用 迦太基
  github“ BranchMetrics / ios-branch-deep-linking” 
  • 使用 源代码 手动安装Branch
  1. Branch.frameworkEmbedded BinariesCopy items if needed选择Copy items if needed
  2. AdSupportSafariServicesMobileCoreServicesCoreSpotlightiAd导入Linked Frameworks

步骤2:启用关联的域

  • 在xcode项目的target->功能中启用关联的域。
  • 在Apple开发配置文件中添加关联的域功能。

步骤3:配置分支仪表板

在“分支”仪表板链接设置中完成以下设置。

  1. 为您的应用程序创建唯一的URI方案,例如myapp://
  2. 如果Play商店或应用商店中已存在相应的iOS应用,请选择该应用。
  3. 要启用通用链接,请在仪表板上添加应用程序的捆绑标识符和Apple应用程序前缀(您可以在Apple开发人员帐户中找到Apple应用程序前缀)。
  4. 您将在链接设置的末尾找到默认链接域和备用链接域。 将这两个前缀为“ applinks: ”的链接添加为xcode项目中的关联域; 看起来像“ applinks:myapp.test-app.link”。 将更改保存在仪表板中。

下图中添加的四个链接分别对应于测试项目和实时项目。

步骤4:建立快速连结

转到“分支”仪表板中的“快速链接”。

  1. 转到信息中心右上方的“创建链接”。 给您的链接起一个名字。 此名称将出现在仪表板中以便于跟踪。 您还可以提供相应的网址。
  2. 唯一的默认名称将附加到您的链接域。 您可以根据需要在创建链接之前更改此名称。 创建链接后,您将无法更改此名称。
  3. 要在移动应用中处理这些快速链接,您可以在深层链接设置中添加键值对。 单击链接后,您将在应用完成区块中获得这些键值对。 例如,在深度链接设置中将reference_id添加为0。
  4. 您可以添加标签进行分析。 您还可以为链接关联图像,以在社交网站中共享它。
  5. 点击“立即创建链接”以创建链接。
  6. 您可以通过电子邮件,Facebook将这些链接共享给用户,也可以选择任何服务提供商。 为了进行测试,您可以将这些URL粘贴到Notes中或发送电子邮件。

步骤5:应用程式设定

在您的项目的Appdelegate文件中添加以下代码。

 进口分公司 
  func application(_ application:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey:Any]?)->布尔{ 
  setupBranchSDK(launchOptions:launchOptions) 
}
  func application(_ app:UIApplication,打开url:URL,选项:[UIApplication.OpenURLOptionsKey:Any] = [:])-> Bool { 
  Branch.getInstance()。application(应用程序,打开:URL,选项:选项) 
返回真
}
  func application(_ application:UIApplication,continue userActivity:NSUserActivity,restoreHandler:@escaping([Any]?)-> Void)-> Bool { 
  Branch.getInstance()。continue(userActivity) 
返回真
}
  func application(_ application:UIApplication,didReceiveRemoteNotification userInfo:[AnyHashable:Any],fetchCompletionHandler completeHandler:@escaping(UIBackgroundFetchResult)-> Void){ 
  Branch.getInstance()。handlePushNotification(userInfo) 
}
 私人功能setupBranchSDK(launchOptions:[UIApplication.LaunchOptionsKey:Any]?){ 
  #if调试 
Branch.getInstance()。setDebug()
#万一
  Branch.getInstance()。initSession(launchOptions:launchOptions){params,_ in 
 如果让params = params as?  [String:AnyObject] { 
 如果让refId = params [“ reference_id”] ?. integerValue { 
/// ********在这里处理深层链接*********
}
}
  } 

在Branch initSession闭包中,您需要处理应用程序中有关参数的导航。

单击链接后,如果未安装应用程序,它将重定向到App Store。 安装应用程序后,Branch initSession关闭将提供所有关联的键值对。

如果已经安装了应用程序,则该应用程序将启动并调用Branch initSession关闭。

使用Branch SDK在iOS中集成通用链接

步骤1步骤2与上述相同。

步骤3:配置分支仪表板

使用分支,如果需要使用通用链接,则需要在仪表板中启用电子邮件服务提供商之一。 在这里,我将解释如何使用Cheetah Digital作为电子邮件服务提供商。

在“分支”仪表板中转到“电子邮件”->“ cheetah digital”并配置设置。

  1. 使用默认设置,单击下一步。
  2. 系统将要求您输入与您的应用程序中的屏幕相对应的网址。 您可以输入网址,也可以跳过此步骤。
  3. 系统将提示您输入CTD(单击跟踪域)。 创建您自己的域,例如“ email.example.com”。 您需要与分支团队进行沟通,以使用CTD托管AASA文件。
  4. 通过输入网址生成测试链接。 在网址末尾附加“ web_only = true”或“ web_only = false”。 您也可以在“ reference_id”后面附加一些值,以导航到应用程序内的其他屏幕。

步骤4:应用程式设定

  1. 在关联的域列表中添加以applinks:为前缀的CTD(请参阅图1),其外观类似于“ applinks:email.example.com”
  2. 添加使用Branch SDK在iOS中集成延迟的深度链接的第5步中提到的所有方法。
  3. 在Branch initSession方法中,检查“ web_only”参数。 如果为true,请检查original_url参数并导航到该URL。
 如果让params = params as?  [String:AnyObject] { 
  //仅对猎豹网络进行参数检查 
 如果让webOnly = params [“ web_only”],webOnly.boolValue == true { 
 如果让urlString = params [“ original_url”]为? 字符串,让url = URL(string:urlString){ 
  UIApplication.shared.openBrowser(URL) 
返回
}
}
}

4.如果web_only参数为false,则检查“ reference_id”,如果存在值,则可以导航到应用程序内的相应屏幕。

5.单击链接后,将调用Branch init会话关闭,并且您需要处理应用程序中有关参数的导航。

!!! 哇! 现在,您已经在应用程序中配置了延迟深度链接和通用链接。

感谢您阅读🙂

Interesting Posts