MacOS开发-给自己的 app 添加 URL Scheme(Xcode 9之后)
生活随笔
收集整理的這篇文章主要介紹了
MacOS开发-给自己的 app 添加 URL Scheme(Xcode 9之后)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1.0 Xcode9之前配置
- 1.1 Xcode9及之后需要在項目的info欄配置URL types
- 2.在代碼中設置識別方法
- 3.運行程序
- 4.在瀏覽器輸入配置好的URL Schemes
- 5.點擊打開,即可調起我們自己的程序
- 參考資料
- URL Scheme是什么
由于蘋果的app都是在沙盒中,相互是不能訪問數據的。但是蘋果還是給出了一個可以在app之間跳轉的方法:URL Scheme。簡單的說,URL Scheme就是一個可以讓app相互之間可以跳轉的協議。每個app的URL Scheme都是不一樣的,如果存在一樣的URL Scheme,那么系統就會響應先安裝那個app的URL Scheme,因為后安裝的app的URL Scheme被覆蓋掉了,是不能被調用的。 - URL Scheme有什么作用
那么app之間的跳轉有什么作用呢?我們所使用的每一個app就相當于一個功能,app的跳轉可以使得每個app就像一個功能組件一樣,幫助我們完成需要做的事情,比如三方支付,搜索,導航,分享等等。 - URL Scheme怎么使用
要跳轉到別人的app,就要知道別人的app的跳轉協議是什么,需要傳入什么參數,我們常見的跳轉協議有下面這些:
所以,如果我們希望別人打開我們的app,只要在plist文件中配置一下你的跳轉協議即可
1.0 Xcode9之前配置
在 Info.plist 中配置CFBundleURLTypes(URL Types),如下所示:
源代碼模式如下:
1.1 Xcode9及之后需要在項目的info欄配置URL types
示例配置如下所示:(本文中假設要設置URL Schemes為testSchemes)
2.在代碼中設置識別方法
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];} //處理url事件 - (void)handleURLEvent:(NSAppleEventDescriptor)theEvent withReplyEvent:(NSAppleEventDescriptor)replyEvent {NSString* path = [[theEvent paramDescriptorForKeyword:keyDirectObject] stringValue];[[NSAlert alertWithMessageText:@"URL Request" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", path] runModal]; }3.運行程序
先運行一次程序,以便URL Schemes注冊到系統。
4.在瀏覽器輸入配置好的URL Schemes
如本文所示,在瀏覽器輸入testSchemes://request=test&arguments=success
'//'后面可以根據需要輸入自己的控制參數,彈出如下提示窗口:
5.點擊打開,即可調起我們自己的程序
可以通過對這個 URL 進行判斷,例如根據不同的 Host,不同的 Query String 來執行不同的動作。
在動作執行完成之后,有可能時需要返回到原app,這樣就需要你的app跳轉協議的url里面傳入調用者app的跳轉協議,這樣用戶在跳轉到你的app完成動作之后就能跳轉回調用app了。
參考資料
https://www.jianshu.com/p/eed01a661186
https://blog.csdn.net/lovechris00/article/details/77896410
總結
以上是生活随笔為你收集整理的MacOS开发-给自己的 app 添加 URL Scheme(Xcode 9之后)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ1179 Polygon 【例题精
- 下一篇: 输入框设置只能输入数字