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
- 将
Branch.framework
到Embedded Binaries
(Copy items if needed
选择Copy items if needed
) - 将
AdSupport
,SafariServices
,MobileCoreServices
,CoreSpotlight
和iAd
导入Linked Frameworks
步骤2:启用关联的域
- 在xcode项目的target->功能中启用关联的域。
- 在Apple开发配置文件中添加关联的域功能。
步骤3:配置分支仪表板
在“分支”仪表板链接设置中完成以下设置。
- 为您的应用程序创建唯一的URI方案,例如myapp://
- 如果Play商店或应用商店中已存在相应的iOS应用,请选择该应用。
- 要启用通用链接,请在仪表板上添加应用程序的捆绑标识符和Apple应用程序前缀(您可以在Apple开发人员帐户中找到Apple应用程序前缀)。
- 您将在链接设置的末尾找到默认链接域和备用链接域。 将这两个前缀为“ applinks: ”的链接添加为xcode项目中的关联域; 看起来像“ applinks:myapp.test-app.link”。 将更改保存在仪表板中。
下图中添加的四个链接分别对应于测试项目和实时项目。
步骤4:建立快速连结
转到“分支”仪表板中的“快速链接”。
- 转到信息中心右上方的“创建链接”。 给您的链接起一个名字。 此名称将出现在仪表板中以便于跟踪。 您还可以提供相应的网址。
- 唯一的默认名称将附加到您的链接域。 您可以根据需要在创建链接之前更改此名称。 创建链接后,您将无法更改此名称。
- 要在移动应用中处理这些快速链接,您可以在深层链接设置中添加键值对。 单击链接后,您将在应用完成区块中获得这些键值对。 例如,在深度链接设置中将reference_id添加为0。
- 您可以添加标签进行分析。 您还可以为链接关联图像,以在社交网站中共享它。
- 点击“立即创建链接”以创建链接。
- 您可以通过电子邮件,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”并配置设置。
- 使用默认设置,单击下一步。
- 系统将要求您输入与您的应用程序中的屏幕相对应的网址。 您可以输入网址,也可以跳过此步骤。
- 系统将提示您输入CTD(单击跟踪域)。 创建您自己的域,例如“ email.example.com”。 您需要与分支团队进行沟通,以使用CTD托管AASA文件。
- 通过输入网址生成测试链接。 在网址末尾附加“ web_only = true”或“ web_only = false”。 您也可以在“ reference_id”后面附加一些值,以导航到应用程序内的其他屏幕。
步骤4:应用程式设定
- 在关联的域列表中添加以applinks:为前缀的CTD(请参阅图1),其外观类似于“ applinks:email.example.com”
- 添加使用Branch SDK在iOS中集成延迟的深度链接的第5步中提到的所有方法。
- 在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会话关闭,并且您需要处理应用程序中有关参数的导航。
!!! 哇! 现在,您已经在应用程序中配置了延迟深度链接和通用链接。
感谢您阅读🙂