스키마와 딥링크

2017. 6. 21. 14:29기술/기타

반응형

다른 앱들과 소통하는 방법

 

다른 앱과 상호작용  |  Android 개발자  |  Android Developers

Android 앱은 일반적으로 여러 가지 활동을 합니다. 각 활동은 사용자가 특정 작업(예: 지도 보기 또는 사진 촬영)을 실행할 수 있도록 사용자 인터페이스를 표시합니다. 사용자를 한 활동에서 다

developer.android.com

여기에서 부터 읽어보면 될거 같습니다.

 

스키마란?

외부에서 자신의 앱에 접근할 수 있도록 해주는 하나의 통로입니다.

 

 

android:scheme는 한 URI의 스키마 일부입니다. 이것은 한 URI을 명시하기 위한 아주 작은 필수 속성입니다.

적어도 한 스키마 속성은 필터에 셋팅되어 있어야만 하거나 다른 URI 속성들이 의미를 갖고 있어야 합니다.

 

한 스키마는 콜론이 없이 명시됩니다. (예를 들어 http:가 아닌 http)

 

만약 필터가 데이터 타입을 가지고 있는데(mimeType 속성) 스키마 타입이 아니라면, content: 그리고 file: 스키마로 추정됩니다.

 

노트: 스키마는 RFC 처럼 대문자로 사용하면 안돼고 항상 소문자로만 사용해야 합니다.

 

그러니까 URI (Uniform Resource Identifier)는 한글로 통합 자원 식별자라고 합니다. 인터넷에 있는 자원을 나타내는 유일한 주소입니다. (위키백과 참조) 해서 보면 URL의 상위 개념이네요. 그중 스키마는 앞머리에 해당합니다.

 

스키마를 어떻게 적용하는가?

우리의 게임 앱의 AndroidManifest.xml을 열고

<activity android:name="우리게임앱Activity" ...>를 찾습니다.

<activity>와 </activity> 안에 <intent-filter>가 있을 것입니다.

<intent-filter>

   <action android:name="android.intent.action.MAIN" />

   <category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

이 코드의 의미는 "어플의 런처를 통해 실행"입니다.

 

<intent-filter>는 다음과 같이 추가해 줄 수 있습니다.

 

보시면 <intent-filter>가 두 개 선언되어 있습니다.

 

<activity android:name="우리게임앱Activity" ...>

<intent-filter>

   <action android:name="android.intent.action.MAIN" />

   <category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

<intent-filter>

   <action android:name="android.intent.action.VIEW" />

   <category android:name="android.intent.category.BROWSABLE" />

   <category android:name="android.intent.category.DEFAULT" />

   <data android:scheme="gamename" />

</intent-filter>

</activity>

 

이렇게 추가해 줍니다. 그러면 다른 앱에서 스키마를 통해 이 앱을 호출해 줄 수 있습니다. 색상 블럭으로 표시한 부분이 스키마 입니다.

 

다른 앱에서 호출 확인

안드로이드 스튜디오에서 기본 앱을 하나 만듭니다.

public class MainActivity extends AppCompatActivity {

   @override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

 

      Intent intent = new Intent();

      intent.setAction(Intent.ACTION_VIEW);

      intent.addCategory(Intent.CATEGORY_BROWSABLE);

      intent.addCategory(Intent.CATEGORY_DEFAULT);

      intent.setData(Uri.parse("gamename://"));

      startActivity(intent);

}

 

이렇게 하면 다른 앱에서 우리의 게임이 실행됩니다.

 

참조 : 

스키마에 관하여

Intent action과 category 상세 정보

 

딥링크란?

웹의 하이퍼 링크와 비슷하게 링크의 일종이며 딥링크를 눌렀을 때, 해당 앱으로 가거나 스토어에서 해당앱을 확인할 수 있는 링크입니다.

딥링크 테스트시 adb 위치 Android\sdk\platform-tools

 

구글 파이어베이스 앱 인덱싱에 관하여

 

반응형

'기술 > 기타' 카테고리의 다른 글

개발자 핵심 역량, 게임 진행 모듈  (0) 2022.01.12
모바일 해킹과 보안  (0) 2020.01.03
젠킨스(Jenkins) 자동 빌드  (0) 2017.02.21
Visual Studio 2017 외 유용한 정보  (0) 2016.09.08
UI 작업 FLOW  (0) 2016.07.11