2010-01-23 45 views
1

我工作的一個處理在應用中自定義URL方案,我試圖理清:UIApplication的handleOpenURL在哪裏返回?

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

我傳球,成功解析URL到一個NSDictionary在我的應用程序,但不知道「現在什麼?」 handleOpenURL返回一個BOOL,但是什麼?我很難調試,因爲我沒有弄清楚如何在設備啓動時運行調試器。

我所知道的是applicationDidFinishLaunchinghandleOpenURL之前完成,看起來好像我的rootViewController在屏幕上。

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    // Load data 
    [self initializeData]; 
    // Configure and show the window 
    [window addSubview:[navigationController view]];  
    [window makeKeyAndVisible]; 
} 

無論如何,所以,現在我有我的appDelegate此的NSDictionary對象,你會如何將其傳遞到RootViewController的,因此它可以在它的詳細視圖用它做什麼?我會打電話

[[navigationController topViewController] addItemWithDictionary:theDictionary]; 

前handleOpenURL的return YES;或者,我應該在我的appDelegate然後後創建一個NSDictionary屬性「YES回報;」檢索它從我的rootViewController(或detailViewController - 還沒有計算出來)。如果是這樣的觸發器?我不清楚handleOpenUrl的回報在哪裏,以及他們對我有什麼價值(如果有的話)。

謝謝!

回答

0

我想我可能已經回答了我自己的問題,但如果您有其他想法,我很樂意聽到他們!

我想我需要繼續在handleOpenURL中處理,然後將字典轉換爲一個對象,然後將其添加到我的appDelegate數組中,該對象正在使用rootViewController構建它的表視圖。在自動填充數組之前,顯然需要在用戶的部分上確定一些驗證&。我想這也會發生在handleOpenURL的限制內?

1

在建議看看這裏大約didFinishLaunchingWithOptions

http://www.iphonedevsdk.com/forum/iphone-sdk-development/31742-handleopenurl-not-called.html

有一對夫婦的我用了傳遞數據的方法,並根據條件我混合起來。

  1. 保持一個全球性的,所以你不必擔心通過。

  2. 使用具有Notification對象的Observer模式使用通知消息中心註冊/發佈數據。

  3. 保存到NSUserDefaults(也是一個字典,但你不必管理它)的URL。

最近我不得不做一些類似的UIWebView和處理過濾一些URL數據。我必須在NSURL上繼承WebViewCache和setSharedCache。我強烈懷疑這將適用於您的問題以及通過使用shouldStartLoadWithRequest檢索數據。

+0

非常有幫助,謝謝!但我仍在尋找誰(或什麼)正在調用'handleOpenURL'的答案,以及YES或NO的返回值對該調用對象有什麼區別?似乎沒有任何區別,從我的應用程序的角度來看... – Meltemi 2010-01-26 19:36:14

1

從其他應用程序或移動Safari(非越獄設備)調試openurl的一個方便的提示是繼承UIApplication並覆蓋一些未記錄的方法,對不起,我不記得名字,但你可以在ericasadun.com挖掘它們,名字會相當明顯。

當您通過xcode啓動應用程序並擊中主頁時,跳板不會終止進程,因爲它是由xcode(afaik)啓動的,因此您可以啓動其他應用程序並在仍連接到調試器時調用openurl。