2015-07-03 60 views
2

我正在實現處理自定義協議的iOS應用程序。 在我的AppDelegate中編寫方法應用程序(openURL:sourceApplication:annotation :)很容易,但我留下了一個問題:我想 - 一旦用戶完成請求 - 我的應用程序移動到後臺併發送用戶回到調用者sourceApplication(例如瀏覽器,QRCode閱讀器或任何其他應用程序)。完全處理openUrl請求後返回到源應用程序

這就像「tel:」和「telprompt:」url調用之間的區別:在前一種情況下,電話應用保持活動狀態,在後一種情況下,在調用之後,用戶將被髮送回sourceApplication 。

爲了讓我的應用程序像「telprompt:」一樣處理我的自定義協議,我可以考慮的唯一方法是在用戶操作完成後終止應用程序......但這是針對iOS人機界面指南(他們說「不要以編程方式退出」),我的應用可能會被蘋果拒絕。

在Android上很容易:您用一個活動迴應一個意圖,當您在該活動中調用finish()時,用戶回到他以前的應用程序/瀏覽器/任何東西。

任何人都知道在iOS上實現這一點的好方法?

只是爲了澄清:

  • 我的應用程序不叫的OpenURL,它響應來自瀏覽器,QR碼閱讀器,其他應用程序的OpenURL請求;

  • 我不必撥打電話;

  • 當我處理請求時我要求用戶輸入一些數據,聯繫服務器,就是這樣:交互完成後,將用戶帶回到以前的應用程序而不讓他使用家庭按鈕。

回答

0

我相信你應該在完成後調用openUrl,並在param中使用源應用程序url。

這就是當您使用「connect with facebook」API時,facebook所做的一切。

+0

這不起作用。例如。當我的應用程序通過在safari中打開的網頁被調用時,我收到sourceApplication =「com.apple.mobilesafari」。然後我嘗試用「com.apple.mobilesafari」,「com.apple.mobilesafari:」或甚至「com.apple.mobilesafari://」調用openUrl,但它們都不起作用。 –

相關問題