[iPhone程式]iPhone開發心得02-用UIApplication開啓內建軟體

来源:互联网 发布:淘宝快修先生怎么样 编辑:程序博客网 时间:2024/05/22 05:05

也許你要設計一個通訊錄軟體,通訊錄中會紀錄電話,你希望按下通訊錄中的電話號碼就會自動撥號。或是像是我想過的一個idea,我稱之為Alert to Send,紀錄了朋友的生日或是重要的事情,當事情發生的時間到了就會發出警告(Alert),提醒你要寄簡訊給朋友說個生日快樂,或是要寄信給老闆報告今天出差的狀況。要做到這些都可以透過開啓對應的iPhone內建軟體來達到目的。 
要開啓iPhone的內建軟體,你會用到UIApplication類別。那iPhone有哪些內建軟體可以透過UIApplication開啓呢 ?包括了: 

  • 瀏覽器(Safari)
  • 地圖(Google Map)
  • 電話撥號
  • 簡訊發送
  • 電子郵件
  • AppStore 

本篇心得先詳細說明開啓內建地圖(Google Map)的方法,並會補充說明開啓上列內建軟體的方法。 
PS:不是用Safari開Google Map喔,這樣做的效率驚人,驚人的慢,慢的可怕!

(1)開啓內建的Google Map
因為我要做的iPhone軟體恰好與Google Map扯上關係,所以對這裡也比較熟悉。我希望可以做到這樣的畫面。讀取一個KML,將KML的地標顯示在地圖上,設定中心點,設定Zoom Level

IMG_0005
一般狀況下要開啟內建的軟體 ,其實就是使用UIApplication開啟對應的內建軟體的連結。像是如果要開啟Google Map的連結就是「http://maps.google.com/maps?QueryString
所以程式會這樣呼叫,這是第一種方法:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@http://maps.google.com/maps?QueryString]];

理論上是這樣沒錯,可是很令人頭痛的狀況是有些QueryString的參數在網頁版的Google Map支援,可是在內建的Google Map不支援,如果使用這些不支援的參數會發生什麼事呢?程式會正常運作,不會有Error,只不過它會自動幫你把Safari打開,接著載入網頁版的Google Map。 

關於Google Map的QueryString詳細內容可以參考 iPhone URLScheme Reference。但也僅止於參考,上面寫的不一定可以使用=="

在我的應用中,必須要讀取KML,試過了很多種QueryString都無法做到,都會幫我打開Safari,最後終於看到FlickrKML這個範例。 
用裡面的網址,結果成功了,程式內容如下,這是第二種方法: 
NSString* openURL = @"maps://?f=q&hl=en&geocode=&q=KmlUrl";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: openURL ]];

但是用了這樣的方式,似乎就無法設定Start Center和Zoom Level,真是怪哉!如果你想透過設定KML來解決,漬漬...那也是沒用的,我設定<LookAt>標籤,但是沒有用,如果你有更好的解法請告訴我Orz...!!!

另外,在<Placemark>標籤中有許多子標籤,我試了一下,只有表示電話號碼的標籤<phoneNumber>可以顯示在Google Map的資訊頁面。就像這樣:
IMG_0006 

其他像是地址<address>、描述<description>、延伸資料<ExtendedData>,這些標籤都沒有效果。關於KML可以參考Google的線上文件KML Reference。所以在不使用iPhone SDK 3.0的MapKit Framework的情況下,我實在猜不出來AroundMe到底怎麼做到的。因為AroundMe一次只需要顯示一個地標,所以我猜測它可能是用第一種方法,但是我踹不出來,QueryString真是一門學問,嘆~
目前計畫跳槽到iPhone SDK 3.0,直接用MapKit做做看,應該會容易許多。


以下方法的來源是Launching Other Apps within an iPhone Application這篇文章,我沒有測試過XD 
(2)開啓電子郵件
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:
@mailto://info@iphonedevelopertips.com]];

(3)開啓電話撥號程式 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@mailto://info@iphonedevelopertips.com]];

(4)開啓簡訊發送 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:55555"]];

(5)開啓瀏覽器 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:websiteUrl]];

(6)開啓AppStore 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&mt=8"]];

開啓AppStore這倒是一個蠻有趣的功能,我們公司似乎有另外一組人馬要做的軟體就是與AppStore有關。但是我也忘記他們要做什麼了XD
以上我都沒試過~!

原创粉丝点击