2011-02-10 3 views
13

내 앱이 설치된 Android 기기에서 열면 내 앱에서 올바른 페이지가 자동으로 열리는 이메일을 통해 보낼 수있는 링크를 만들려고합니다.Android 앱에 딥 링크

나는 부분적으로 약간 다른 방식으로 작동하지만 누군가 해결할 수 있는지 궁금해하는 몇 가지 문제점을 발견했습니다.

시도 1 : 사용자 정의 구성표 사용 : myapp : // someItem. 이것은 작동하지만 일부 전자 메일 응용 프로그램은 http가 아니므로 링크로 간주하지 않습니다. 응용 프로그램을 유효한 링크로 취급하도록 강제하는 방법이 있습니까? 예를 들어 Gmail.

시도 2 ​​: http 링크를 호스트와 함께 사용 : http://com.myapp/someItem. 이뿐만 아니라 작동하지만 이상한 모든 http 링크를 처리하도록 등록 된 내 애플 끝납니다.

시도 3 : http 링크를 호스트 및 포트와 함께 사용 : http://com.myapp:2345/someItem. 이것은 링크가 열렸을 때 여전히 브라우저에서 링크를 여는 옵션을 제공한다는 단점이있는 현재 솔루션입니다. 브라우저가 내 링크를 열려고 시도하는 것을 막을 수있는 방법이 있습니까?

누구나 링크를 모든 응용 프로그램에서 링크로 취급하고 브라우저를 열 때 브라우저에서 무시할 수있는 방법이 있습니까?

+0

"앱 콘텐츠를위한 딥 링크 사용 설정 방법"- 딥 링크는 안내 메시지, 삽입 페이지 또는 로그인없이 사용자를 콘텐츠로 직접 이동시켜야합니다. . – user2056563

답변

4

은 ... 사용자가 선호하는 브라우저를 변경할 수 있도록 할 것 실제 프로덕션 앱에서는 아직 마일리지가 다를 수 있습니다. 내가 한 일은 숨겨진 iframe을 만들고 사용자 정의 URL 스키마로 위치를 설정하고 문서의 onload에서 함수를 호출하는 기법을 사용하는 것입니다. 지금까지 보았던 것 (2.2 및 2.3 장치에서만 테스트했습니다)은 응용 프로그램을 설치하는 응용 프로그램이 설치되어 있으면 응용 프로그램이 시작되고 그렇지 않으면 페이지가 렌더링됩니다.

상대적으로 단일 URL을 정리하여 두 경우를 모두 처리하고 URL의 Twitter 공유와 같은 것을 망치지 않습니다. 실제 제작 버전에서는 요청이 데스크톱과 호환되지 않는 위험을 줄이기 위해 응용 프로그램을 지원할 수있는 플랫폼처럼 보이는 경우 숨겨진 iframe 검색 만 수행 할 수 있습니다.

+1

나는이 90 %의 효과를 얻었다. 내가 싫어하는 것은 그것이 브라우저에 페이지를 남기는 것뿐입니다. 나는 그것이 성공에 1 페이지를 돌아가고 그것이 다운로드 링크를 표시하는 데 실패 할 때 머물고 싶습니다. 리디렉션이 작동하는지 확인하는 방법을 찾았습니까? – skorulis

+1

미안하지만, 역사와 물건을 최적화하기에 충분히 속지 않았고, 기초를 테스트 해 보았습니다. 일반적으로 브라우저에 페이지를 남겨 두면서 문제를 처리하기 위해 의도하지 않은 플래그로 시작할 수 있습니다. 그러나 "뭔가 다른 것"이 그것을 시작하기 때문에, 나는 당신이 고침을 찾는 것에 대해 어떻게 갈 것인지 확신하지 못합니다. 행운을 빕니다! 적어도 기본 작업은 행복합니다. – mikerowehl

0

서버 측에서 뭔가를 사용할 수 있다면 방문했을 때 브라우저의 사용자 정의 구성표 링크로 이동하는 일반 페이지가있을 수 있습니까? 이것은 응용 프로그램이 설치되지 않았는지 여부를 알 수 있고 설치를 프롬프트 할 수있는 장점이 있습니다.

그러나 브라우저에서 여는 링크 문제는 해결되지 않습니다. 내가 생각할 수있는 유일한 진정한 해결책은 적절한 응용 프로그램으로 이동하는 링크 처리기입니다.

http://mobile.dzone.com/news/custom-url-schemes-phonegap

나는 그것을 시도하지 않은 : 그 다음 문제는

이 기술은 실제로 내가 무엇을 말할 수에서 안드로이드에서 작동하는 것 같군
+0

응용 프로그램이 설치된 경우 브라우저에서 어떻게 확인합니까? – skorulis

+0

오, 나는 그것에 대해 생각하지 않았다. 쉬운 방법이 있는지 나는 모른다. 적어도 클릭 연결 페이지가 가능할 것입니다. ; 편집 : 어쩌면 당신은 응용 프로그램에서 HTTP 서버 서비스를 실행할 수 다음 응용 프로그램의 존재를 감지하는 데 사용합니까? 그 순간에 내가 생각해 낼 수있는 전부입니다. –

4

질문에 답하려면 매니페스트의 샘플 인 텐트 필터를 사용하십시오. 어떤 하나 http://www.example.com/home로 시작하는 링크를 클릭 할 때

<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:host="www.example.com" 
     android:pathPrefix="/home" 
     android:scheme="https"/> 
</intent-filter> 

은 그러니까 기본적으로, 그/그녀는 브라우저 응용 프로그램과 함께 앱을 엽니 할 수있는 옵션이 제공됩니다. 활동의 의도를 처리해야합니다.

또한 스키마가 아무 것도 될 수는 있지만, http 스키마는 Google에서 권장하므로 앱과 브라우저 앱 모두 딥 링크 된 URL에 대한 클릭을들을 수 있습니다.

참고 : 앱 연결을 원할 경우 웹 페이지에 android-app : // yourpackage name/http/www.example.com/home/...을 추가하는 것을 잊지 마십시오.

1
1:-set Custom URL schemes like http://example.com. 
    For example, the URL http://example.com/?id=95 , 
    will open up the relevant FAQ and the URL 
    http://example.com/?sectionid=8 
    (where sectionid is the publish id of any Section), 
    will open up relevant section. 
2:- <activity android:name="com.example.shilpi.deeplinkingsample.DeepLinkActivity"> 
      <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="http" android:host="example.com"/> 
      </intent-filter> 
     </activity> 
3:-   @Override 
      protected void onResume() { 
       super.onResume(); 

       Intent in = getIntent(); 
       Uri data = in.getData(); 
       System.out.println("deeplinkingcallback :- "+data); 
      } 
+2

이 답변은 기술적으로 정확할 수도 있지만 답변 내용을 설명하여 답변을 채울만한 가치가 있습니다. 이것은 OP와 미래 방문자 모두에게 도움이 될 것입니다. 그대로, 이것은 단지 코드 덤프 일뿐입니다. – Bugs