적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/개발 업무

[Swift iOS] URL scheme send data 스키마로 데이터 주고받기

hongssup_ 2021. 12. 12. 02:25
반응형

스키마를 사용하여 외부 앱을 열 때 추가적으로 데이터를 함께 전송해야 할 경우가 있다.

그런 경우에 스키마를 이용한 데이터 전송과 수신 방식에 대해 알아보자. 

 

URL scheme 데이터 전송

let data = "sendData"
//스키마로 외부 앱 실행
if let openApp = URL(string: "yourapp://" + data), UIApplication.shared.canOpenURL(openApp) {
    UIApplication.shared.open(openApp, options: [:], completionHandler: nil)
}

스키마로 외부앱 실행하는 부분에서 url string에 "yourapp://sendData" 이런 식으로

스키마명:// 뒤에 데이터를 붙여서 전송해주면 된다. 간단하다. 

 

URL scheme 데이터 수신

실행시킨 외부 앱이 열렸을 때, 전송받은 데이터를 AppDelegate에서 다음과 같이 가져와 보았다.

func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    ApplicationDelegate.shared.application(
        app,
        open: url,
        sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
        annotation: options[UIApplication.OpenURLOptionsKey.annotation])
    print("url: \(url), scheme: \(url.scheme)")  //url: yourapp://sendData, scheme: yourapp
    if url.scheme == "yourapp" {
        let str = url.absoluteString  //"yourapp://sendData"
        let arr = str.split(separator: "/")  //["yourapp:", "sendData"]
        print("receiveData: \(arr[1])")  //receiveData: sendData
    }
}

 

728x90
반응형