在 MonoTouch 中注册自定义 NSUrlProtocol
本文关键字:自定义 NSUrlProtocol 注册 MonoTouch | 更新日期: 2023-09-27 18:32:01
我正在使用MonoTouch构建一个iOS应用程序,并尝试实现自定义NSUrlProtocol。
当我注册自己的协议实现时,出现以下错误:
WebKit 丢弃了 webView:decisionidePolicyForNavigationAction:request:frame:decisionListener: 委托: * -canInitWithRequest: 仅 为抽象类定义。 定义 -[Foo.Network.NetworkServices+TestProtocol canInitWithRequest:]!
关于可能导致这种情况的原因的任何想法?
这是代码:
//Registering the protocol
NSUrlProtocol.RegisterClass(new Class(typeof(TestProtocol)));
public class TestProtocol : NSUrlProtocol
{
public TestProtocol ()
{
this.Client = new TestProtocolClient();
}
public override bool CanInitWithRequest (NSUrlRequest request)
{
return true;
}
}
public class TestProtocolClient : NSUrlProtocolClient
{
public override void DataLoaded (NSUrlProtocol protocol, NSData data)
{
}
public override void FailedWithError (NSUrlProtocol protocol, NSError error)
{
}
public override void ReceivedResponse (NSUrlProtocol protocol, NSUrlResponse response, NSUrlCacheStoragePolicy policy)
{
}
public override void Redirected (NSUrlProtocol protocol, NSUrlRequest redirectedToEequest, NSUrlResponse redirectResponse)
{
}
public override void CachedResponseIsValid (NSUrlProtocol protocol, NSCachedUrlResponse cachedResponse)
{
}
public override void FinishedLoading (NSUrlProtocol protocol)
{
}
public override void ReceivedAuthenticationChallenge (NSUrlProtocol protocol, NSUrlAuthenticationChallenge challenge)
{
}
public override void CancelledAuthenticationChallenge (NSUrlProtocol protocol, NSUrlAuthenticationChallenge challenge)
{
}
}
MonoTouch 中的 NSUrlProtocol 支持目前已中断。
它将在下一个测试版(MonoTouch 5.3.3)中修复。还有一个示例可用于展示它的工作原理(但在 MonoTouch 5.3.3 发布之前它显然不起作用)。
如果紧急情况,Xamarin 的支持通常可以为您提供预览版本。