ios - 将我的 iOS 应用程序检测为网络浏览器

标签 ios swift xcode browser

我正在构建一个浏览器应用程序。我希望 iOS 将其检测为浏览器。我尝试将 http 添加到 URL Schemes,但没有成功。

我试过了 this answer .

最佳答案

在 iOS 中,操作系统不会跟踪哪些应用程序是浏览器,就系统而言,用户应该使用 Safari 进行所有操作。因此,没有类似于您链接的问题的 API,它指的是 macOS。

但是,如果您希望您的应用显示在“打开方式”弹出窗口中,您可以 set your app as able to open certain document types .有很多 system-declared document types ,但您可能需要特别注意与网络相关的内容,例如 public.html (kUTTypeHTML)。

不幸的是,我相当确定 iOS 不允许应用程序声明支持打开纯 http URL,只允许自定义 URL 方案,但您仍然可能希望声明对某些文件类型(如 HTML)的支持,以防万一用户试图打开一个。这是一个例子:

首先,您需要告诉 Xcode 您支持哪些文档,您可以通过选择目标、转到信息并添加文档类型来实现:

Adding public.html to Document Types

然后,只要您的应用程序被要求打开 .webarchive 文件,This document描述了您必须从哪里打开它。基本上,因为您不拥有文件类型,所以您可以在 application:didFinishLaunchingWithOptions:application:willFinishLaunchingWithOptions 中查看选项字典。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

    if let url = launchOptions?[UIApplicationLaunchOptionsKey.url] as? URL {
        // This code would probably exist in one of your controllers
        let request = URLRequest(url: url)
        webview.load(request)
    }

    return true
}

所以实际上,AppDelegate 很可能会通过简单地将 URL 传递给应用程序的另一部分来将其委托(delegate)给它。

但同样,用户仍然可能无法直接转到 Safari 并将网页共享到您的应用程序。您的应用可能只会在用户实际点击实际 html 文件上的共享时显示,但这可能是 iOS 提供的最接近您想要的东西。

关于ios - 将我的 iOS 应用程序检测为网络浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785424/

相关文章:

ios - 模态 Segue 导致黑屏

ios - 在 iOS 中检查整数或小数的正则表达式

ios - 如何从AppGyver扫描仪清除类固醇应用程序

ios - 将缩略图附加到通知时,文件去了哪里?

iphone - 用户退出时停止,无效并设置为NSTimer为Nil

xcode - 代码签名错误 : No provisioning profiles found in xcode 7. 3

iphone - Objective-C:没有已知的选择器initWithRequest类方法

swift - UICollectionView 突出显示带有阴影的单元格

ios - 两个类的 Swift 可选继承

ios - 无法同时满足 View Controller 的约束