App間的呼叫與參數傳遞

1 篇文章 / 0 new
author
App間的呼叫與參數傳遞
不同 app間的相互呼叫與參數傳遞, 可藉由 URL Schemes 設定來達成. URL Schemes 可以算是介面定義.
►提供介面供其它 app 呼叫與傳遞參數
定義方式可在 info.Plist 來進行, 加入格式如下

URL Schemes.item 0 = rtsp 表示透過 URL 為 rtsp://....起頭的字串
另外亦可透過介面直接設定
►啟用 URL Schemes 的呼叫設定
想要透過 UIApplication.shared.open 還呼叫其它app, 則需開啟權限指定那些 scheme 是許可(某些系統內定是不用如 http). 一樣需在 info.Plist 設定參數
►程式呼叫方式
let url:String = "rtsp://127.0.0.1/ch01?a=123&b=456";
if let url = URL(string:url) {
    if UIApplication.shared.canOpenURL(url) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(url, options: [:], completionHandler: {
                (success) in
                print("Open Url: \(success)")
            })
        } else {
            UIApplication.shared.openURL(url)
        }
    }
}

►接收端 app 的觸發

當有外部 app 透過 URL Schemes 進行呼叫, 則 AppDelegate 會被觸發

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    //經由 URL Scheme 來開啟app時觸發
    print(tag+url.absoluteString);
    /*let appId = SDK.Settings.appId
    if url.scheme != nil && url.scheme!.hasPrefix("fb\(appId)") && url.host ==  "authorize" { // facebook
        return SDKApplicationDelegate.shared.application(app, open: url, options: options)
    }*/
    return false
}
Free Web Hosting