本文分享如何使用UIApplication,每個App都會有一個UIApplication實體,不需要建立,而是透過sharedApplication方法取得。
取得UIApplication實體
var currentApp = UIApplication.sharedApplication();
Local and Push Notification
當App在背景執行時,也能主動通知使用者,此為Local and Push Notification;因需較為深入探討,再撰寫專文介紹,可先參考如下連結。
開啟超連結
要在App中開啟超連結,可以用openURL方法,參考以下程式碼。
let param:NSURL = NSURL(string:url)!
UIApplication.sharedApplication().openURL(param)
Links類型
|
範例
|
Email
|
mailto:web@kunhsiang.com
|
Phone
|
tel:1-408-555-5555
|
FaceTime
|
facetime://user@example.com
|
SMS
|
sms:1-408-555-1212
|
Map
|
http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino
|
iTunes
|
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=156093464&id=156093462&s=143441
|
Youtube
|
http://www.youtube.com/watch?v=VIDEO_IDENTIFIER
|
openURL不僅可以開啟常用的應用程式,它更是應用程式間溝通的方式,我們可以自訂URL用來開啟別的App並且傳遞參數,以下面URL其中todolist是代表的應用程式名稱,後面是參數,詳細可參考Using URL Schemes to Communicate with Apps。
todolist://www.acme.com?Quarterly%20Report#200806231300
移除Statusbar
可以將App上方的Statusbar移除,方法有兩種,一種是從Application的角度來實作,另一種則是則從ViewController角度來實作。
從Application角度來實作,先在Application加入Key為View controller-based status bar appearance,Value為No;然後在AppDelegate加入以下程式碼。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarHidden = true
return true
}
從ViewController角度來實作較為簡單,直接在ViewController加入程式碼。
override func prefersStatusBarHidden() -> Bool {
return false
}
或是
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
應用程式狀態
UIApplication物件可以用applicationState方法取得目前App的狀態,分為Active、InActive及Background;簡單來說Active是App在前景執行,並且能接收事件、InActive也是在前景執行,但是無法接收事件,可能被來電中斷或是正在執行某段程式碼正在等待中、Background則是按下Home鍵後App會在背景執行。
var AppStatus = ""
if (currentApp.applicationState == UIApplicationState.Active)
{
AppStatus = "Application Status:Active"
}
else if (currentApp.applicationState == UIApplicationState.Inactive)
{
AppStatus = "Application Status:Inactive"
}
else if (currentApp.applicationState == UIApplicationState.Background)
{
AppStatus = "Application Status:Background"
}
搖晃偵測
UIApplication可用來設定是否能偵測搖晃,屬性如下。
app.applicationSupportsShakeToEdit = YES;
但是實際上可從ViewController來實作為佳,參考以下程式碼。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.becomeFirstResponder()
}
override func canBecomeFirstResponder() -> Bool {
return true
}
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) {
if(event.subtype == UIEventSubtype.MotionShake) {
var alert = UIAlertController(title: "Shaken",
message: "Not Stirred",
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK",
style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
}
關閉自動睡眠
iPhone/iPad在一段時間未使用時,因為省電的原因會自動進入睡眠狀態,若要關閉自動睡眠功能可用以下屬性。
application.idleTimerDisabled = true
網路狀態指示
可顯示或移除網路狀態指示,運用以下屬性。
application.networkActivityIndicatorVisible = false
沒有留言:
張貼留言