我想使用自定义NSURLProtocol
类来提供静态数据以进行测试,我已经在应用程序本身实现了协议,并将其注册到NSURLSessionConfiguration.protocolClasses
。我想将协议类移动到另一个应用程序并注册它以供其他应用程序使用。这可能吗?
registerClass:
州的Apple文档:
尝试注册NSURLProtocol的子类,使其对URL加载系统可见。
在我想用作协议的新应用程序中,我注册了协议,但外部应用程序没有调用它。
// Swift 3
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
URLProtocol.registerClass(MyCustomURLProtocolClass)
}
我希望外部应用能够将我的协议类与NSURLSession
一起使用,并使用foo://externalApplication.com
等网址调用它。
感谢您的帮助!
答案 0 :(得分:3)
NSURLProtocol
注册本质上是每个进程。在一个进程中注册协议是不可能在另一个进程中使用它,因为这将是一个安全漏洞,允许任何应用程序轻易操纵任何其他应用程序的流量。
假设这仅用于测试目的,并假设您可以控制这两个应用程序,您可以考虑A.在服务器代码中编写服务器代码或使用openURL在这些应用程序之间建立通信通道:
有关详细信息以及更多应用程序间通信技巧和技巧,我建议您阅读本文:http://www.goldmansachs.com/what-we-do/engineering/see-our-work/app-to-app-comm.html