iOS Schemes的使用

我們都知道盗痒,iOS系統(tǒng)為了數(shù)據(jù)的安全性,對每個應(yīng)用存儲的數(shù)據(jù)進(jìn)行安全處理,即沙盒存儲機制俯邓。使得應(yīng)用的存儲空間是彼此分離的骡楼。這樣就保證了數(shù)據(jù)的安全性。但是應(yīng)用之前彼此分離也阻礙了相互的通信稽鞭。因此蘋果給出了應(yīng)用之間傳遞信息的方法URL Schemes鸟整。像我們平時所看到的分享、支付等都是通過URL Schemes的方式進(jìn)行應(yīng)用間的跳轉(zhuǎn)傳遞信息的朦蕴。

1.使用URL Scheme跳轉(zhuǎn)到其他應(yīng)用

如果我們想要跳轉(zhuǎn)到別的應(yīng)用篮条,首先你要知道其他App的Scheme是什么?以下是一些常見的應(yīng)用的Scheme

QQ mqq://
微信是 weixin://
網(wǎng)易新聞 newsapp://
淘寶 taobao://
點評 dianping://
微博 sinaweibo://
支付寶 alipay://
豆瓣fm: doubanradio://
微盤 sinavdisk://
網(wǎng)易公開課 ntesopen://
美團 imeituan://
人人 renren://
我查查 wcc://
1號店 wccbyihaodian://
有道詞典 yddictproapp://
知乎 zhihu://
優(yōu)酷 youku://
ZAKER zakeripad://
mdict mdict://
京東hd openApp.jdiPad://
易迅 icson://吩抓;yixunipad://
wunderlist wunderlist://
支付寶 alipay://

比如我們想要跳轉(zhuǎn)去微信涉茧,首先我們把微信的schemes加入到應(yīng)用的白名單。在當(dāng)前app的info.plist文件中增加LSApplicationQueriesSchemes字段為Array疹娶,然后把需要跳轉(zhuǎn)的應(yīng)用加入伴栓。如下圖


然后在觸發(fā)事件加入下面的代碼

   let string = "weixin://data=xxx"
        //data=xxx為傳遞參數(shù)
        let url = URL.init(string: string)
        if UIApplication.shared.canOpenURL(url!) {
            let dict = [:] as [String:Any]
            //iOS10 之后 open方法增加了 參數(shù)options可以傳遞一個字典 攜帶一些信息給被跳轉(zhuǎn)的app處理, 還有一個閉包雨饺,來傳遞是否跳轉(zhuǎn)成功钳垮?
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url!, options: dict, completionHandler: { (res) in
                    print("跳轉(zhuǎn)是否成功?\(res)")
                })
            } else {
                // Fallback on earlier versions
                UIApplication.shared.openURL(url!)
            }
        }

schemes可以傳遞信息,這里的weixin://之后的內(nèi)容 data=XXX就是傳遞的參數(shù)额港。iOS10 之后 open方法增加了 參數(shù)options可以傳遞一個字典 攜帶一些信息給被跳轉(zhuǎn)的app處理饺窿, 還有一個閉包,來傳遞是否跳轉(zhuǎn)成功移斩?
這里注意一下要對url scheme 進(jìn)行encoding 編碼肚医,否則漢字 空格 會崩潰

2.創(chuàng)建Schemes讓其他app來跳轉(zhuǎn)到我們的app

(1.)在App內(nèi)的info->URL Ttpes->增加一個URL Schemes如下圖

(2.)處理其他app跳轉(zhuǎn)過來的攜帶的信息
在Appdelegate里面添加下面方法

   //此方法從iOS9開始啟用
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        print(url,options)

        return true
    }
    //此方法iOS9之后被廢棄
    func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
        return true
    }
     //此方法iOS9之后被廢棄  url 為scheme url sourceApplication 為跳轉(zhuǎn)過來app的bundle id
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        return true
    }

以上三個方法實現(xiàn)一個即可,可依據(jù)自己兼容的最低iOS版本而定叹哭。

3.系統(tǒng)的一些Schemes
     系統(tǒng)內(nèi)置
     telprompt:10010  tel:10010
     //撥打電話
     facetime://user@example.com
     //facetime 通話
     facetime-audio://user@example.com
     // facetime 語音
     sms:86-130-9999-9999&body=你好
     //body 為信息內(nèi)容 可省略 body
     mailto:foo@example.com?cc=bar@example.com&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!
     //第一個為發(fā)送給誰 參數(shù)cc為抄送給誰 subject 為郵件的主題 body為內(nèi)容 后面的參數(shù)都可以省略
     itms-apps:itms-apps://itunes.apple.com/cn/app/idXXXXXX?mt=8&action=write-review
     //跳轉(zhuǎn)appstore去評價 注意把id后面的XXXXX換成自己應(yīng)用的號碼忍宋。
 //直接跳轉(zhuǎn)到系統(tǒng)對應(yīng)的設(shè)置頁面,但是試驗發(fā)現(xiàn)iOS10 可以執(zhí)行痕貌,iOS11無效
     電池電量 App-Prefs:root=BATTERY_USAGE
     通用設(shè)置 App-Prefs:root=General
     存儲空間 App-Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE
     蜂窩數(shù)據(jù) App-Prefs:root=MOBILE_DATA_SETTINGS_ID
     Wi-Fi 設(shè)置 App-Prefs:root=WIFI
     藍(lán)牙設(shè)置 App-Prefs:root=Bluetooth
     定位設(shè)置 App-Prefs:root=Privacy&path=LOCATION
     輔助功能 App-Prefs:root=General&path=ACCESSIBILITY
     關(guān)于手機 App-Prefs:root=General&path=About
     鍵盤設(shè)置 App-Prefs:root=General&path=Keyboard
     顯示設(shè)置 App-Prefs:root=DISPLAY
     聲音設(shè)置 App-Prefs:root=Sounds
     App Store 設(shè)置 App-Prefs:root=STORE
     墻紙設(shè)置 App-Prefs:root=Wallpaper

Demo戳這里

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末风罩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子舵稠,更是在濱河造成了極大的恐慌超升,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哺徊,死亡現(xiàn)場離奇詭異室琢,居然都是意外死亡,警方通過查閱死者的電腦和手機落追,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門盈滴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事巢钓〔∶纾” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵症汹,是天一觀的道長硫朦。 經(jīng)常有香客問我,道長背镇,這世上最難降的妖魔是什么咬展? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮瞒斩,結(jié)果婚禮上破婆,老公的妹妹穿的比我還像新娘。我一直安慰自己济瓢,他們只是感情好荠割,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旺矾,像睡著了一般蔑鹦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箕宙,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天嚎朽,我揣著相機與錄音,去河邊找鬼柬帕。 笑死哟忍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陷寝。 我是一名探鬼主播锅很,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凤跑!你這毒婦竟也來了爆安?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤仔引,失蹤者是張志新(化名)和其女友劉穎扔仓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咖耘,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡翘簇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了儿倒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片版保。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彻犁,到底是詐尸還是另有隱情蹈垢,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布袖裕,位于F島的核電站曹抬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏急鳄。R本人自食惡果不足惜谤民,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疾宏。 院中可真熱鬧张足,春花似錦、人聲如沸坎藐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岩馍。三九已至碉咆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛀恩,已是汗流浹背疫铜。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留双谆,地道東北人壳咕。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像顽馋,于是被迫代替她去往敵國和親谓厘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容