深入淺出話iOS URL Scheme(二)實戰上

實戰篇(上)

注冊自定義URL Scheme

  • 首先注冊一個自定義的URL Scheme,在工程中找到 info.plist 文件添加URL Types。
添加URL Types.png
  • 展開URL Types,有一行URL identifier,它是你URL scheme的名字,為了避免與其他App的重復,一般使用翻轉域名來定義。
定義URL identifier.png
  • 在URL identifier的同級目錄添加一條URL Schemes,這里值得注意的地方有兩點:
  • 被創建出的URL Schemes是一個Array,這意味著你可以定義多個URL Scheme;
  • URL Scheme其實是對大小寫不敏感的,也就是說schemeDemoschemedemo的效果其實是一致的,這個后面是可以驗證的。
添加URL Schemes.png
定義scheme.png
  • 整體效果應該是這個樣子:


    整體效果.png

相應代碼實現

  • 我們需要在AppDelegate中實現這個方法:
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
    以下是我的實現方式:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    
    NSLog(@"從哪個app跳轉而來 Bundle ID: %@", sourceApplication);
    NSLog(@"URL scheme:%@", [url scheme]);
    NSLog(@"URL query: %@", [url query]);
    
    // 提示并展示query
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"打開URL Scheme成功"
                                                        message:[url query]
                                                       delegate:nil
                                              cancelButtonTitle:@"確定"
                                              otherButtonTitles:nil];
    [alertView show];
    
    return YES;
}

這段代碼其實只做了2件事:打印一些必要的信息到控制臺,然后彈出一個提示框告訴你Scheme是否打開成功。其中query為查詢串,里面存儲著參數信息。

打開Scheme

  • 下面是驗證階段,我們打開Safari,在地址欄像輸入一段普通的URL一樣輸入我們定義的Scheme和://
駝峰寫法.png

你可以嘗試一下②中的寫法,效果是一樣的。這也就是我上面說的Scheme對大小寫并不敏感。


非駝峰寫法.png
  • 點擊確定鍵,系統會彈出提示框
提示是否打開該鏈接.png
  • 點擊打開,便會跳轉到我們的App中,并執行我們寫好的- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;方法

更復雜的Scheme

  • 事實上來說,我們可以將我們的Scheme寫的更復雜一些,可以帶一些我們需要參數過來,像是這樣


    帶參數的Scheme.png
  • 進入App后的效果如下,顯示我們打開成功,并將?之后的字符串全部顯示了出來,也就是[url query]中取到的內容,如果我們需要把相應的參數解析成OC的屬性或者變量,那么就需要自己寫好對應的解析方法。關于這一點我會在下一篇中詳細講解。

    效果圖.png

控制臺的輸出


控制臺輸出.png

在代碼中直接打開Scheme

  • 當然我們還可以不局限于在Safari中打開Scheme,我們還可以在App中借助openURL方法直接打開Scheme。我們在demo中的VC里加一個按鈕。它的點擊事件執行如下代碼
NSString *scheme = @"schemedemo://?parameter2=openScheme";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:scheme]];

效果與在Safari中打開一致


直接打開Scheme.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,791評論 6 545
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,795評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,943評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,057評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,773評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,106評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,082評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,282評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,793評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,507評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,741評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,220評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,929評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,325評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,661評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,482評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,702評論 2 380

推薦閱讀更多精彩內容