通過url啓動ios應用程序

iPhone SDK中最酷的功能之一是一個應用程序能夠把自己和自定義的URL協議綁定,這個URL協議可用於啓動該應用程序(通過瀏覽器或者iPhone上的另一個程序)。創建這樣的綁定並不難,難的是你忍不住要在你的程序裏用它!

首先,你需要說明你想如何在程序中響應這個URL。最簡單的自定義協議的方法是“喚醒”,而且可以通過URL把信息傳遞給程序,這樣,程序被喚醒後能做更多的事情。

註冊自定義URL協議

首先需要向iPhone註冊一個自定義URL協議。這是在你的項目文件夾的info.plist文件進行的(就是你改變應用程序圖標的同一個文件)。

默認,Xcode在圖形窗口中打開info.pllist,當然也可以直接用文本模式打開——對有的人來說這反而更簡單。

Step1. 右鍵,選擇“Add Row”

http://img.ph.126.net/0Iph-Hv_YPrI43zgkCotkw==/644859171660999084.png


Step2. Key值選擇“URL types”

http://img.ph.126.net/9PtAWSrlCfLNZ5_W6Z_TnQ==/2651494280631266664.png


Step3. 打開“Item 1″,然後爲該key增加一個URL identifier。可以是任何值,但建議用“反域名”(例如 “com.myapp”)。

http://img.ph.126.net/Rc90ogDPreD62FS2WYalvg==/2492460918789746022.png


Step4. 在“Item1”下再加一行。

http://img.ph.126.net/5EsyS1mPVhrFhctSYRU2dw==/2568459162501622413.png


Step5. 選擇“URL Schemes” 作爲Key。

http://img.ph.126.net/ba_lQpRIWvTcxfhB1FSJMg==/2723551874669194374.png


Step6. 輸入你的URL協議名 (例如“myapp://” 應寫做“myapp”)。如果有必要,你可以在這裏加入多個協議。

http://img.ph.126.net/JaWpOJRaxAZdGwSM5ctwag==/2511601217206070303.png


注意:如果以文本模式打開info.plist,你會看到文件中添加了如下內容:

CFBundleURLTypes


   CFBundleURLSchemes


     myapp


   CFBundleURLName

   com.yourcompany.myapp


處理URL

現在,URL已經註冊好了。任何人都可以用打開URL的方式通過你的協議去啓動一個應用程序。

例如:

myapp://


myapp://some/path/here


myapp://?foo=1&bar=2


myapp://some/path/here?foo=1&bar=2


iOS SDK將向UIApplicationDelegate發送一條消息,啓動和上述URL綁定的應用程序。

如果你想進行自定義處理,在你的delegate中實現該消息,例如:


- (BOOL)application:(UIApplication *)applicationhandleOpenURL:(NSURL*)url {   // Do something withthe url here }

通常,我們會從參數中解析出URL以便在視圖中顯示或者存儲到UserPreference。下面的例子把URL存儲爲User Preference的url變量中:

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

{

   if (!url) {  return NO; }


   NSString *URLString = [urlabsoluteString];

   [[NSUserDefaultsstandardUserDefaults] setObject:URLString forKey:@"url"];

   [[NSUserDefaultsstandardUserDefaults] synchronize];

   return YES;

}

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL *)url {     if (!url) {  returnNO; }      NSString *URLString= [urlabsoluteString];     [[NSUserDefaults standardUserDefaults] setObject:URLStringforKey:@"url"];     [[NSUserDefaults standardUserDefaults] synchronize];     return YES; }


現在,你已經知道如何喚醒你的程序並向其傳遞參數了。Enjoy!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章