2011-09-13 26 views
8

我註冊一個應用程序來處理通過URL打開和感到困惑與應用:的OpenURL:sourceApplication:註釋返回NO與YES

application:openURL:sourceApplication:annotation

按照documentation你應該返回YES,如果你能支持該網址,如果沒有則爲NO。這有什麼好處呢?如果網址格式不正確或不受支持,我將返回「否」,但應用程序仍會打開,就好像沒有任何問題。誰聽這BOOL回報,他們做了什麼?無論如何,如果URL的格式不正確或不支持,阻止應用程序打開?

回答

4

該文檔說如果您成功打開URI,則返回YES,如果沒有,則返回NO。請注意,「確實成功或確實無法打開」與「可以或不可以打開」在語義上不同。不幸的是,無法阻止應用程序啓動 - 如果它註冊了一個模式,那麼無論URI的其餘部分是否格式正確,它都將啓動。

UIApplication有兩種方法:canOpenURL:openURL:。第一個只有檢查模式是否受支持(不是完整的URL),後者啓動應用程序的位置並返回應用程序委託的結果。

因此,要回答你的問題:其他應用程序調用誰是[[UIApplication sharedApplication] openURL:url]誰聽你委託的結果

+0

有趣的,所以,當/應該如何其他應用程序的響應進行響應的一個?此時用戶在不知道如何處理傳遞的URL的應用程序中 –

+0

這是正確的。此時,用戶在另一個應用程序中,除非另一個應用程序專門啓動您的用戶或手動切換回用戶,否則不會再回到您的應用程序中。我不確定他們的意圖是在創建這個API,但我認爲它主要是爲了同一個開發人員的應用程序之間的通信而創建的,這些開發人員彼此「很好地玩」。這是一個猜測,我不認爲你可以找到爲什麼蘋果有這種方法的文件。它也可能只是過時的API,在傳統版本的iOS之上是「他們能做的最好的」。 – Nick

+1

這是一個公平的假設。感謝您的輸入,我會將其標記爲回答,並認爲它主要是無用的返回值。 –

相關問題