之前用淘寶給微信好友分享鏈接的時(shí)候恃泪,發(fā)現(xiàn)在微信中復(fù)制了寶貝的鏈接,然后再從后臺(tái)切換到淘寶客戶端犀斋,淘寶就會(huì)彈出一個(gè)頁面贝乎,詢問是否要跳轉(zhuǎn)到相關(guān)頁面,今天試著實(shí)現(xiàn)了一下叽粹,分享出來~
//識(shí)別剪貼板中的內(nèi)容
if let paste = UIPasteboard.generalPasteboard().string where
(paste.hasPrefix("http://") || paste.hasPrefix("https://")) {
//如果剪貼板中的內(nèi)容是鏈接
let alert = UIAlertController(title: "要打開剪貼板中的鏈接嗎览效?",
message: nil,
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "打開",
style: UIAlertActionStyle.Default,
handler: { Void in
// your implementation
print(paste)
}))
alert.addAction(UIAlertAction(title: "忽略",
style: UIAlertActionStyle.Cancel,
handler: nil))
//彈出Alert
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let vc = storyboard.instantiateViewControllerWithIdentifier("navi") as? UINavigationController {
self.window?.rootViewController = vc
vc.presentViewController(alert, animated: true, completion: nil)
}
}
獲取設(shè)備的剪貼板很簡(jiǎn)單,第一行代碼就搞定了虫几,if 語句中判斷了一下剪貼板中的內(nèi)容是不是鏈接锤灿,注意http和https都要寫上,這點(diǎn)很容易被忽略(在瀏覽器地址欄中復(fù)制以www.開頭的文本會(huì)自動(dòng)在剪貼板中轉(zhuǎn)為http或https開頭的鏈接)辆脸。
更值得注意的是但校,因?yàn)槟阈枰?App 在每次從后臺(tái)進(jìn)入前臺(tái)的時(shí)候都檢測(cè)一下剪貼板中有沒有鏈接,所以以上方法要放在 AppDelegate 文件的 applicationWillEnterForeground 方法中啡氢。
而這個(gè)方法中是不能通過 self 來調(diào)用 ViewController 的始腾,所以要曲線救國(guó)的話,你需要手動(dòng)獲取 Storyboard空执、ViewController浪箭,再設(shè)置window的rootViewController 才能去掉所有報(bào)錯(cuò)和警告。
(這里我只是把剪貼板中的鏈接輸出到控制臺(tái)了辨绊,想要自己用 UIWebView 打開鏈接的話奶栖,在// your implementation 這句注釋這里寫自己的方法吧)
【150928 更新】
對(duì)比 applicationWillEnterForeground
和 applicationDidBecomeActive
這兩個(gè)方法,前者是指 App從后臺(tái)進(jìn)入前臺(tái),后者是指 App處于活躍狀態(tài)宣鄙,所以前者相對(duì)于后者袍镀,缺少的部分是,當(dāng) App 剛剛啟動(dòng)冻晤,而不是從后臺(tái)取出的時(shí)候苇羡,它無法識(shí)別剪貼板。
因?yàn)槟悴荒芤竺看味甲層脩粝劝?App 打開鼻弧,再往剪貼板里面填東西设江,再跳轉(zhuǎn)回來,所以個(gè)人建議把上面的代碼放在 applicationDidBecomeActive 方法中攘轩,而不是 applicationWillEnterForeground 叉存。