📱
Appz外部应用程序深度链接变得简单
突出特点
-
Web后备支持
如果应用无法打开外部应用程序,它将回退到浏览器打开的保证成功的URL。 -
隔离应用程序规范
确保库可以随着支持的App数量增加而扩展是很重要的。因此,每个支持的App都独立于单独的文件实现。 -
完全自动补全支持: 该API经过了精心设计,以便充分利用自动补全功能,因此您甚至不需要查看任何文档或代码!
-
全面测试
为了使规范尽可能透明,库包含测试以确保每个外部应用程序操作都有预期的结果。
功能
您可以在框架附带的游乐场中尝试它们!
简洁的语法触发深度链接
let app = UIApplication.shared
app.canOpen(Applications.Instagram())
app.open(Applications.AppStore(), action: .account(id: "395107918"))
app.open(Applications.AppSettings(), action: .open)
透明的网页后备
// In case the user doesn't have twitter installed, it will fallback to
// https://twitter.com/testUser/statuses/2
app.open(Applications.Twitter(), action: .status(id: "2", screenName: "testUser"))
添加您的应用程序
// Applications are recommended to be part of the
// "Applications" namespace
extension Applications {
// Define your application as a type that
// conforms to "ExternalApplication"
struct MyApp: ExternalApplication {
typealias ActionType = Applications.MyApp.Action
let scheme = "myapp:"
let fallbackURL = ""
let appStoreId = ""
}
}
// Then, you define the actions your app supports
extension Applications.MyApp {
enum Action: ExternalApplicationAction {
case open
// Each action should provide an app path and web path to be
// added to the associated URL
var paths: ActionPaths {
switch self {
case .open:
return ActionPaths()
}
}
}
}
app.open(Applications.MyApp(), action: .open)
支持的应用程序(目前)
入门
配置Info.plist
您必须在您的app的info.plist文件中LSApplicationQueriesSchemes
项下添加您想要使用的方案。更多内容请参考此处。
Carthage
Carthage提供了完整支持。只需将以下行添加到您的Cartfile
github "SwiftKitz/Appz"
Cocoapods
Cocoapods提供了完整支持。只需将以下行添加到您的Podfile
pod 'Appz'
子模块
对于手动安装,您可以直接获取源代码或通过git子模块,然后只需
- 将
Appz.xcodeproj
文件作为一个子项目拖放(确保未启用复制资源
) - 转到您的根项目设置。在“嵌入的二进制文件”下,点击“+”按钮并选择
Appz.framework
动机
我在我的应用程序中集成深度链接时遭受了极多的痛苦,这超出了我愿意承认的程度。很容易忘记调用canOpenURL
或某处缺少冒号。另一个痛点是翻遍网络寻找不同应用程序的不同规范。
使用这个库,您可以单独保存外部应用程序的深度链接规范,并且可以放心,因为它是开源的,并由GitHub上优秀的社区维护!
作者
Mazyod (@Mazyod)
贡献者
这个库如果不是有各种开发人员的慷慨贡献的话,不可能走这么远!
许可
Appz遵循MIT许可协议。详情请见LICENSE文件。