웹에서 특정 어플을 호출시키는 방법을 찾다가 정리해놓고 싶어서 글을 남긴다
우선 어플리케이션에서는 아래와 같은 수정을 해줘야한다.
안드로이드
어플
AndroidManifest.xml
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="schemeName" android:host="hostName" />
</intent-filter>
위에서 schemeName과 hostName을 원하는대로 수정.
단지 이렇게만 처리를 하면 해당 액티비티가 계속해서 중복 실행되는 문제가 발생한다.
해당 액티비티 안에
android:launchMode="singleTask"
를 추가해서 중복 실행이 되지 않도록 해주자.
iOS
어플
info.plist에서
URL types
└ item 0
└ URL identifier : hostName
URL Schemes
└ item 0 : schemeName
위에서 schemeName과 hostName을 원하는대로 수정.
위와 같이 작성 해준다.
그리고 schemeName://hostName
으로 호출하면 해당 어플리케이션 호출이 가능하다
그리고 파라미터를 전달하고 싶을때가 생긴다.
schemeName://hostName?param1=test1¶m2=test2
와 같은 식으로 전달 해주면 된다.
파라미터를 전달했으면 받는법도 알아야 사용할 수 있을것이다.
파라미터를 전달 받는 방법은 아래와 같다
안드로이드
onResume에서 아래와 같은 코드를 추가 하여 사용한다
if(getIntent()!=null){
Uri uri = getIntent().getData();
if(uri != null){
Log.d("Test", "URI: " + uri.toString());
Log.d("Test", "Parameter1: " + uri.getQueryParameter("param1"));
Log.d("Test", "Parameter2: " + uri.getQueryParameter("param2"));
}
}
위에 액티비티 중복 실행을 방지하려고 singleTask 모드로 설정해놨다면 onResume이 아니라 onNewIntent에서 받아줘야 한다.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.d(LOG_TAG, "onNewIntent()");
Uri uri = intent.getData();
Log.d("Test", "URI: " + uri.toString());
Log.d("Test", "Parameter1: " + uri.getQueryParameter("param1"));
Log.d("Test", "Parameter2: " + uri.getQueryParameter("param2"));
}
이렇게 쓰도록 하자
iOS
AppDelegate.m 파일에 아래와 같은 함수를 추가 하여 사용한다
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
queries = [[url query] componentsSeparatedByString:@"&"];
for(int i=0; i<[queries count]; i++)
{
NSArray *param = [[queries objectAtIndex:i] componentsSeparatedByString:@"="];
NSString *name = [param objectAtIndex:0];
NSString *value = [param objectAtIndex:1];
NSLog(@"name : %@ , value : %@", name, value);
}
}
'공부하기 > Development' 카테고리의 다른 글
Android Studio에서 Javadoc 한글 포함하여 생성하기 (0) | 2017.08.17 |
---|---|
파이썬으로 라이브러리를 만들어보자 (0) | 2016.08.22 |
GIT 명령어 정리 (0) | 2016.02.10 |
Node.js + Socket.io 로 채팅 만들기 (0) | 2016.01.12 |
JNI에 다차원 배열 넘겨주기. (0) | 2015.12.21 |