gpt4 book ai didi

ios - 注册 NSURLProtocol (URLProtocol) 类以与外部应用程序一起使用?

转载 作者:行者123 更新时间:2023-12-01 18:41:56 33 4
gpt4 key购买 nike

我想使用自定义 NSURLProtocol类为测试提供静态数据,我已经在应用程序本身中实现了协议(protocol)并将其注册到 NSURLSessionConfiguration.protocolClasses .我想将协议(protocol)类移动到另一个应用程序并将其注册以供其他应用程序使用。这可能吗?

registerClass: 的 Apple 文档状态:

Attempts to register a subclass of NSURLProtocol, making it visible to the URL loading system.



在我想用作协议(protocol)的新应用程序中,我注册了协议(protocol),但外部应用程序没有调用它。
// Swift 3
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
URLProtocol.registerClass(MyCustomURLProtocolClass)
}

我希望外部应用程序能够将我的协议(protocol)类与 NSURLSession 一起使用并使用诸如 foo://externalApplication.com 的 url 调用它.

谢谢您的帮助!

最佳答案

NSURLProtocol注册本质上是每个进程的。不可能在一个进程中注册协议(protocol)以在另一个进程中使用它,因为这将是一个安全漏洞,允许任何应用程序轻松操纵任何其他应用程序的流量。

假设这只是为了测试目的,并且假设您可以控制这两个应用程序,您可能会考虑 A. 在应用程序扩展中编写服务器代码或 B. 使用 openURL 在应用程序之间建立通信 channel ,如下所示:

  • 使您的服务器应用程序成为实际的 Web 服务器。 (有许多第三方 Web 服务器框架。)
  • 为该服务器应用程序注册一个 URL 方案,以便其他应用程序可以按需启动它。
  • 在另一个应用程序中,注册一个 URL 方案,以便服务器应用程序在启动后可以将控制权返回给该应用程序。
  • 在另一个应用程序中,使用 openURL 启动服务器应用程序并传递将打开另一个应用程序的自定义 URL。
  • 在服务器应用程序中,解码该 URL 并使用 openURL 切换回另一个应用程序,将端口号作为它发送到另一个应用程序的 URL 的一部分附加。
  • 在另一个应用程序中,从 URL 中获取端口号并开始与本地 Web 服务器通信。如果这未能响应,请发送另一个 openURL 请求。

  • 有关详细信息以及更多应用程序间通信技巧和技术,我建议阅读这篇文章: http://www.goldmansachs.com/what-we-do/engineering/see-our-work/app-to-app-comm.html

    关于ios - 注册 NSURLProtocol (URLProtocol) 类以与外部应用程序一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41552437/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com