You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

技术问询:如何从iOS应用唤起LinkedIn Learning App或跳转App Store

在iOS应用中实现LinkedIn Learning的跳转逻辑(安装则打开,未安装则跳App Store)

嘿,这个需求在iOS开发里太常见了,我帮你梳理一下完整的实现步骤,分配置和代码两部分,保证你能快速搞定👇

前置准备:配置Info.plist

iOS 9及以后,系统限制了应用可以查询的第三方URL Scheme,所以第一步必须在你的Info.plist里添加允许查询的Scheme:

  1. 打开项目的Info.plist文件
  2. 添加一个名为LSApplicationQueriesSchemes数组类型
  3. 在数组里新增字符串元素:linkedinlearning

这一步是核心前提,如果不配置,就算用户安装了LinkedIn Learning,你的应用也检测不到。

代码实现(Swift & Objective-C)

我们的逻辑优先级是:优先用Universal Links(体验更好,无弹窗)打开应用,失败则尝试URL Scheme,最后如果都不行,就跳转到App Store对应页面。

Swift 版本

import UIKit

// 封装成工具函数,方便在任意页面调用
func openLinkedInLearning() {
    // 1. 优先尝试Universal Link(LinkedIn Learning的通用链接)
    guard let universalLink = URL(string: "https://www.linkedin.com/learning/") else { return }
    if UIApplication.shared.canOpenURL(universalLink) {
        UIApplication.shared.open(universalLink, options: [:], completionHandler: { success in
            if !success {
                // Universal Link打开失败,兜底用URL Scheme
                self.tryOpenWithScheme()
            }
        })
    } else {
        tryOpenWithScheme()
    }
}

private func tryOpenWithScheme() {
    // 2. 尝试URL Scheme打开LinkedIn Learning
    guard let schemeURL = URL(string: "linkedinlearning://") else { return }
    if UIApplication.shared.canOpenURL(schemeURL) {
        UIApplication.shared.open(schemeURL, options: [:], completionHandler: nil)
    } else {
        // 3. 未安装应用,跳转到App Store
        guard let appStoreURL = URL(string: "itms-apps://itunes.apple.com/us/app/linkedin-learning/id1084807225?mt=8") else { return }
        UIApplication.shared.open(appStoreURL, options: [:], completionHandler: nil)
    }
}

Objective-C 版本

#import <UIKit/UIKit.h>

- (void)openLinkedInLearning {
    // 1. 优先尝试Universal Link
    NSURL *universalLink = [NSURL URLWithString:@"https://www.linkedin.com/learning/"];
    if ([[UIApplication sharedApplication] canOpenURL:universalLink]) {
        [[UIApplication sharedApplication] openURL:universalLink options:@{} completionHandler:^(BOOL success) {
            if (!success) {
                [self tryOpenWithScheme];
            }
        }];
    } else {
        [self tryOpenWithScheme];
    }
}

- (void)tryOpenWithScheme {
    // 2. 尝试URL Scheme
    NSURL *schemeURL = [NSURL URLWithString:@"linkedinlearning://"];
    if ([[UIApplication sharedApplication] canOpenURL:schemeURL]) {
        [[UIApplication sharedApplication] openURL:schemeURL options:@{} completionHandler:nil];
    } else {
        // 3. 跳转到App Store
        NSURL *appStoreURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/us/app/linkedin-learning/id1084807225?mt=8"];
        [[UIApplication sharedApplication] openURL:appStoreURL options:@{} completionHandler:nil];
    }
}

关键注意事项

  • 为什么优先用Universal Links?:iOS 10+使用URL Scheme打开第三方应用时,会弹出“是否允许打开XXX”的确认弹窗,而Universal Links(LinkedIn官方已配置好)能直接唤起应用,用户体验更流畅。
  • App Store链接用itms-apps://:这个协议会直接唤起App Store应用,而https://开头的链接会先打开Safari再跳转,体验差很多。
  • 测试提示:一定要用真实设备测试,模拟器无法安装LinkedIn Learning,会直接跳转到App Store。
  • 版本兼容:代码里的open(_:options:completionHandler:)是iOS 10+API,如果需要兼容iOS 9,可以补充openURL:的兜底逻辑(不过现在iOS 9用户占比极低)。

内容的提问来源于stack exchange,提问作者Imran Qadir Baksh - Baloch

火山引擎 最新活动