问题:本文的目的是找出下面代码的问题所在,并找到合适的解决方案,从主应用的自动填充凭据提供程序扩展目标打开主应用。
尝试1:我将URL方案设置为“open”,如下图所示:
然后我尝试从扩展viewcontroller调用这个函数:
func openMainApp()
{
let urlStr: String = "open"
let url2 = NSURL(string: urlStr)
self.extensionContext.open(url2! as URL)
}
在打开主应用程序之前,在打开功能时崩溃,并显示以下消息:
线程2:EXC_BAD_ACCESS(代码=1,地址= 0x 10)
我认为已正确设置了打开应用程序的所有内容。我错过了什么?
尝试2:尝试新配置以避免URL“解包”问题和下面的无效URL问题,将URL方案更改为“open:“,并在“print(url)”行设置断点以确保URL已形成。断点变量记录在代码下面。
仍在获取:线程3:EXC_BAD_ACCESS(代码=1,地址= 0x 10)
func openMainApp()
{
var urlComponents = URLComponents(string: "open:")
if let url = urlComponents?.url {
print(url)
self.extensionContext.open(url)
} else {
print ("NIL URL")
}
}
URL组件基础。URL组件?某些URL基础。URL“打开:“_url NSURL“打开:“0x 000000281695540基础NSObject@0 NSObject
_URL字符串ID 0x 100001 d80 0x 000000100001 d80_基本URL ID 0x 80001000010001 0x 080001000010001_客户端NSString“打开“:0x 8521474 e0 e31 dd 15_保留的NSURL 0x 0000000000000000
引发异常的线程的标题:
扩展工具包'__62-[扩展上下文实现打开URL:完成处理程序:]块调用2:
2条答案
按热度按时间6uxekuva1#
不允许凭据提供程序扩展打开URL。
从documentation
每个扩展点决定是否支持此方法,或者在什么条件下支持此方法。在iOS中,Today和iMessage应用扩展点支持此方法。iMessage应用扩展只能使用此方法打开其父应用,并且仅当父应用显示在iOS主屏幕上时才能使用此方法。
1tu0hz3e2#
我设法启动主应用程序从自动填充扩展使用响应链像:
其中
rootViewController
是您为此扩展提供的视图控制器。