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

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

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

【问题讨论】:

    标签: iphone ios ipad openurl


    【解决方案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时是这样的吗?
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多