Other/Unity

[Unity] launch a unity app from url scheme or deep link in ios(스키마를 이용하여 웹에서 유니티 앱 열기(SSO))

개발왕 금골드 2020. 2. 26. 00:22
반응형

안녕하세요 골드입니다.

오늘은 스키마라는 것을 이용하여 외부에서 우리가 만든 앱에 접근하는 방법에 대해서 글을 쓰겠습니다.

 

1. 스키마에 대한 간단 설명

 

여기 웹브라우저가 있습니다.

저는 검색창에 myapp://를 치고 엔터를 누르겠습니다.

이렇게 쳤더니 이런 창이 뜹니다. '~~~~'에서 이 페이지를 열겠습니까?

저기서 '열기'를 누르면 해당 app으로 바로 이동할 수 있습니다.

 

혹은 이런 예도 있습니다.

웹에 링크가 걸려있습니다. 

저 링크를 클릭하면 마찬가지로 해당 앱으로 이동되고, 자동 로그인까지 됩니다.

 

게임을 할 때에도 웹에서 로그인을 하고 게임 스타트 버튼을 누르면 

게임이 실행되고 자동으로 로그인까지 완료되는 것을 볼 수 있습니다.

 

예를 들어 myapp://something?email=12345@12345&access_token=1234512345 이런 URL이 있습니다.

myapp://으로 앱에 접근하고 email과 access_token. 즉, 비밀번호를 앱에 던져주면

앱은 그 데이터로 자동 로그인을 진행하는 것입니다.

 

오늘 할 일은 바로 이러한 기능입니다.

앱을 클릭하는 것뿐만 아니라, 웹, 혹은 특정 링크와 앱을 연결하는 작업입니다.

 

 

2. 유니티에서 ios로 빌드하기

ios로 빌드하기 위해서는 mac OS 환경이 필요합니다.

 

유니티 프로젝트 빌드 타겟을 ios로 바꿔줍니다.

ios에서 유니티 프로젝트를 처음 빌드하는 경우에 상당히 어려울 수 있습니다.

안드로이드와 다르게 ios에서 빌드를 했을 경우 xcode project창이 열립니다. (xcode 최선버전이 설치되어야 합니다.)

 

xcode창이 열리면서 빌드되고 있다고 표시가 될 것입니다.

빌드가 끝나면 Info Tab을 클릭합니다.

 

맨 밑에 Info -> URL Types를 클릭합니다.

info가 나오지 않는다면 왼쪽에 target을 제대로 설정했는지 확인해 주세요.

URL Types에 들어가면 먼저 Identifier에 우리가 만든 앱에 Bundle Identifier를 입력해주세요.

URL Schemes에 여러분의 앱 이름을 입력하세요. (myapp://에서 myapp이 여기서 결정됩니다.)

 

3. UnityAppController.mm 파일 수정하기

 

classes -> UnityAppController.mm 파일을 클릭합니다. (혹은 본인이 .mm 파일을 만들 수도 있어요.)

이해하기 어려운 코드일 수 있는데요. 괜찮습니다.

UnityAppController.mm 으로 들어가서 이렇게 생긴 코드를 찾아줍니다.

 

이 메서드 안에 몇 가지 코드를 입력해줍니다.

(코드 출처 : Stakoverflow)

출처 : stakoverflow

맨 위에 if문에 빨간 글씨를 주목해주세요.

@"myapp://" 는 myapp://~~~~ 라고 입력했을 때를 의미합니다.

@"myurl"은 unity에 보낼때 myurl이라는 이름의 string으로 보낸다는 것을 의미합니다.

myurl은 PlayerPref 형태로 Unity에 저장됩니다.

UnitySendMessage를 이용해 Unity로 보내줍니다.

UnitySendMessage("GameObject name", "Method name", url) 입니다.

첫 번째 인자는 스크립트가 들어있는 게임 오브젝트의 이름,

두 번째 인자는 그 스크립트에서 사용할 메서드 이름,

세 번째 인자는 보내는 url 값입니다.

마지막으로 밑에 NSLog는 Xcode 콘솔에서 디버그를 위한 Log입니다.

그럼 이제 Unity에서 받을 일만 남았습니다.

 

4. 유니티에서 Xcode에서 던진 스키마 데이터 받기

여러분이 작성한 메서드로 갑니다.

IPHONE으로 나눠주시고, 

PlayerPref.GetString을 사용하면 Xcode에서 받은 Url을 string으로 저장할 수 있습니다.

 

마지막으로 url을 한번 더 ParseQueryString을 사용해서

Unity 내부에서 parsing해 주신 다음 여러분의 코드에 맞게 Split해서 사용하면 되겠습니다.

여기까지 골드였습니다.

감사합니다.

반응형