본문 바로가기

IT/iOs

iOS 유니버셜 링크 적용 방법 (Universal Link)

iOS 유니버셜 링크란 (Apple Universal Link)

 

기능

웹에서 앱을 호출 하는 기능이 필요할 때가 있습니다.

기존에는 Scheme URL 방식으로 호출을 했었는데 이 방식을 사용하면 기기에 앱이 설치되어있는 없든 사용자가 링크를 눌렀을 때 

'앱스토어로 이동하시겠습니까?'라는 알럿이 뜹니다. 이 알럿창 확인 버튼을 누르면 앱이 깔려있으면 앱으로 이동하게 됩니다.

동작 사항이 부자연스럽습니다.

앱으로 이동하는데 안내 문구는 앱스토어를 말하니깐요

해당 문제를 해결할 수 있는 방법이 유니버셜 링크입니다.

유니버셜 링크를 이용하면 앱이 설치되어있는 사용자가 링크를 누르면 앱으로 이동하고 없으면 앱스토어로 이동하게 됩니다.

좀 더 나아가 이 기능을 OS에서 처리해주나 기대를 했지만 앱스토어로 보내는 부분은 웹 개발 쪽에서 구현을 하게 됩니다.

앱쪽에서는 프로젝트 세팅을 해주고 링크받아 들어온 이벤트 후처리를 해주는 해줍니다.

 

 

 

 

유의사항

ip 및 http에선 동작하지 않음

앱이 미설치되어 있을 경우 앱스토어로 보내는 기능은 앱이 아닌 웹에서 a 태그로 구현함

지원 OS 버전 : iOS 9 이상

 

적용 방법

1. Associated Domains Entitlement 추가

위치 : Xcode Signing & Capabilities 탭 Associated Domains.

형식 : <service>:<fully qualified domain>[:port number]

service 종류 및 설명 : 유니버셜 링크에서는 applinks를 사용합니다.

  • webcredentials: Use this service for shared web credentials.
  • applinks: Use this service for universal links.
  • activitycontinuation: Use this service for Handoff.

universallink

 

2. Apple App Site Association 파일을 웹사이트에 추가

파일명: apple-app-site-association (확장자 없음)

위치: .well-known 디렉터리 또는 root 디렉터리에 추가

 

 

 

 

 

3. apple-app-site-association 파일 내용

apps : 유니버셜 링크에서는 사용하지 않지만 빈 배열로라도 반드시 명시되어 있어야 합니다.

details : 웹사이트에서 핸들링되는 앱들의 목록입니다. 즉 한 웹사이트에서 유니버셜 링크를 사용하는 여러 앱 연동이 가능합니다.

appId : 앱의 식별값으로 팀 아이디와 번들 identifier를 사용합니다. 형식:<team identifier>.<bundle identifier>.

paths : 앱에서 지원하는 웹사이트 경로(*: 전 위치 가능)

{
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "yourTeamID1.com.your.domain1",
            "paths": ["*"]
            },
            {
            "appID": "yourTeamID2.com.your.domain2",
            "paths": ["/videos"]
        }]
    }
}



링크 쿼리문 조작

기본적으로는 웹 링크에 get방식으로 앱과 규칙을 정해서 파라미터로 넘깁니다.

보안상 문제가 생길것도 같지요

그래서 그런지 19년도 wwdc에서 아래와 같이 aasa파일에 명시하여 파라미터를 넘기는 방법이 소개되었습니다.

19년도에 소개되었기 때문에 하위 버전들 호환에 있어서 어떨지는 잘 모르겠네요 일단 테스트는 잘 안 해봤습니다 

공식 개발문서에는 언급돼있지 않습니다.

 

https://www.yourdomain.com/?parameter=something

{
	"applinks": {
	"apps": [],
	"details": [{
		"appID": "MYID",
		"components": [{
			"/" : "",
			"?": { "parameter": "something" }
			}]
		}]
	}
}

 

https://developer.apple.com/videos/play/wwdc2019/717/

 

What's New in Universal Links - WWDC 2019 - Videos - Apple Developer

Universal Links allow your users to intelligently follow links to content inside your app or to your website. Learn how the latest...

developer.apple.com

 

 

 

 

 

참고 싸이트

https://valuefactory.tistory.com/166 아이피로는 동작하지 않아 도메인을 만들어야 함

 

무료 도메인 만들기

무료 도메인 만들기 출처 : https://blog.lael.be/post/6070 아직 도메인 구매에 비용을 지불하고 싶지 않는 사용자, 서버 공부 중인 사용자, 대학교 과제를 하기 위해서 이 글을 보고 있는 사용자를 위해 무료 도..

valuefactory.tistory.com

 

https://medium.com/@abhimuralidharan/universal-links-in-ios-79c4ee038272

 

Universal links in iOS

Last day I was asked to integrate deep linking in one of the app that I made last year. It was in objective-C. I had to face so many issues…

medium.com

 

http://www.wisetracker.co.kr/%EB%B9%84%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9C%A0%EB%8B%88%EB%B2%84%EC%85%9C-%EB%A7%81%ED%81%AC-%ED%95%B5%EC%8B%AC-%EA%B0%9C%EB%85%90/

 

비개발자를 위한 유니버셜 링크(Universal Link) 핵심 개념

iOS의 새로운 딥링크 표준인 유니버셜 링크에 대한 비개발자 입장에서의 개념 정의를 돕는 글입니다. 유니버셜 링크의 장점, 동작 로직, 설정 방법을 설명하여, 개발자 이외의 실무자에게 유니버셜 링크 개념에 대한 완성된 이해를 목적으로 합니다.

www.wisetracker.co.kr

https://rhammer.tistory.com/261

 

[Raywenderlich - iOS] Universal Link 적용하기

iOS9에서 소개된 Universal link. Raywenderlich의 튜토리얼을 살펴봅니다! 혹시 제공하는 서비스가 웹과 iOS앱을 함께 지원하고 있나요? iOS9에서 웹과 앱을 연결할 수 있는 Universal link가 소개되었습니다...

rhammer.tistory.com

 

'IT > iOs' 카테고리의 다른 글

생체인증 구현하기  (0) 2020.01.14
Xcode 11.1,11.2,11.3 Crash  (0) 2020.01.12
시물레이터에서 3d 터치 쓰는법  (0) 2020.01.08
아이폰 개발자 맥 하드 용량 확보 팁  (0) 2019.12.20
폴더 생성, 삭제, 파일 삭제  (0) 2019.12.19