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

也許你要設計一個通訊錄軟體,通訊錄中會紀錄電話,你希望按下通訊錄中的電話號碼就會自動撥號。或是像是我想過的一個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
以上我都沒試過~!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值