Thursday, February 21, 2013

[UIApplication sharedApplication] openURL

沒錯, 這個標題很怪. 因為這是iPhone SDK裡呼叫其他程式的語法. 為什麼會用這個當標題? 因為為了實作讓我的app能夠直接叫Safari秀出Google Search 結果這個的功能. 找到了這個語法. 本來以為五分鐘就可以搞定的功能, 結果花了一兩個小時在這上面. 我照著第一個找到的範例裡的sample寫出了下面的code

NSString *urlAddress = [NSString stringWithFormat:@"http://www.google.com/search q=%@",input];

 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: urlAddress]];

 

然後丟進New York City當input測試. 怎麼跑都叫不出Safari來秀Google Search的結果. 

看了一堆範例跟一堆討論文章, 試了一堆方法(還照了一些討論搞了個WebView來取代這個方法也不行). 搞不定就是搞不定. 結果心血來潮, 改了一下測試的資料, 總算找到原因是因為New York City這個Search Terms裡有空白. 而我沒有做encode的處理. 舉例來說, 我串出來的字串都會是 "http://www.google.com/search/q=New York City" , 但是上面那個語法一定只吃 "http://www.google.com/search/q=New%20York%20City"這樣的input. 找到了這個原因, 果真是五分鐘就搞定這個功能. 只是這個五分鐘花了一兩個小時來學到這個經驗. 真是不便宜. 所以特別寫下來作紀錄. 也看看有沒有機會幫到一些遇到類似狀況的人. 

 

 

No comments:

Post a Comment