iOS URL Scheme,完成后返回 Safari

Posted

技术标签:

【中文标题】iOS URL Scheme,完成后返回 Safari【英文标题】:iOS URL Scheme, return to Safari when done 【发布时间】:2011-08-06 22:59:31 【问题描述】:

我想实现一个自定义 URL 方案,类似于 mailto 在 Safari 中的工作方式。在我的 html 中,我有一个指向我的自定义方案的链接(例如 myapp://parms),它将调用定义了 myapp 方案的我的应用程序。 myapp 完成后,我想返回 Safari 浏览器页面。如果您有“mailto:”,则邮件应用程序有一个取消按钮。如果你推送它,或者发送,完成后它就会消失,Safari 页面就在那里。

我知道我不应该杀死我的应用程序。如果我尝试,它会回到家,而不是 Safari。完成后如何让我的自定义方案应用消失(隐藏?)以便调用应用返回?

【问题讨论】:

【参考方案1】:

您可以让方案指定一个回调 URL,当您完成任务时打开该 URL。例如,

myapp://dosomeaction?callback=http://referring-site.com

然后您只需阅读回调 URL 并使用 openURL: 即可到达那里。您甚至可以添加一些额外的参数来向调用者指示成功/失败。

【讨论】:

这个问题是调用自定义方案的网页是一个表单,我想从表单调用自定义应用程序并返回,我不能丢失表单上的所有数据。再次调用浏览器会丢失表单上已经输入的任何数据。 mailto: 的处理方式正是我想做的。 你不能完全像 mailto 那样做:因为它是由操作系统处理的并且使用模态的 MFMailComposeViewController。您无法以相同的方式显示您的应用程序,您只能切换到它。【参考方案2】:

您最好的选择是使用自定义方案在 URL 中传递您想要返回的 URL。换句话说,您将对“回调”URL 进行 URL 编码,并将其作为一个元素放在用于打开您的应用程序的 URL 中。

当您的应用程序完成其任务时,它会使用打开时收到的数据,使用 [[UIApplication sharedApplication] openURL:yourURL] 方法再次打开 URL。

【讨论】:

按照OP的指示,邮件应用在完成后返回Safari时是这样的吗?

以上是关于iOS URL Scheme,完成后返回 Safari的主要内容,如果未能解决你的问题,请参考以下文章

iOS 9 无法使用 URL SCHEME 打开 Instagram 应用

ios和android应用都可以注册自定义url scheme吗

第一次使用Url scheme时App中iOS自定义Url Scheme打不开

IOS之URL Scheme的使用

iOS插件化架构探索

ios 怎样获取当前web的url