完全处理openUrl请求后返回到源应用程序

问题描述:

我正在实现处理自定义协议的iOS应用程序。 在我的AppDelegate中编写方法应用程序(openURL:sourceApplication:annotation :)很容易,但我留下了一个问题:我想 - 一旦用户完成请求 - 我的应用程序移动到后台并发送用户回到调用者sourceApplication(例如浏览器,QRCode阅读器或任何其他应用程序)。完全处理openUrl请求后返回到源应用程序

这就像“tel:”和“telprompt:”url调用之间的区别:在前一种情况下,电话应用保持活动状态,在后一种情况下,在调用之后,用户将被发送回sourceApplication 。

为了让我的应用程序像“telprompt:”一样处理我的自定义协议,我可以考虑的唯一方法是在用户操作完成后终止应用程序......但这是针对iOS人机界面指南(他们说“不要以编程方式退出”),我的应用可能会被苹果拒绝。

在Android上很容易:您用一个活动回应一个意图,当您在该活动中调用finish()时,用户回到他以前的应用程序/浏览器/任何东西。

任何人都知道在iOS上实现这一点的好方法?

只是为了澄清:

  • 我的应用程序不叫的OpenURL,它响应来自浏览器,QR码阅读器,其他应用程序的OpenURL请求;

  • 我不必拨打电话;

  • 当我处理请求时我要求用户输入一些数据,联系服务器,就是这样:交互完成后,将用户带回到以前的应用程序而不让他使用家庭按钮。

我相信你应该在完成后调用openUrl,并在param中使用源应用程序url。

这就是当您使用“connect with facebook”API时,facebook所做的一切。

+0

这不起作用。例如。当我的应用程序通过在safari中打开的网页被调用时,我收到sourceApplication =“com.apple.mobilesafari”。然后我尝试用“com.apple.mobilesafari”,“com.apple.mobilesafari:”或甚至“com.apple.mobilesafari://”调用openUrl,但它们都不起作用。 –