2017-12-13 48 views
1

내 iOS 앱에서 Firebase Dynamic 링크 (위대하다!)를 구현했으며 현재 Android에서 동일한 작업을 수행 중입니다. 동적 URL을 클릭하여 Android 앱을 시작할 수는 있지만 실행기 활동 이외의 다른 활동에서는 열 수 없습니다.Firebase Dynamic Link 특정 활동 열기

여기 내 manifest.xml 파일 : 나는 URL을 클릭하면

<activity android:name=".Activity.SplashActivity" 
     android:theme="@style/SplashTheme" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Activity.RouteListActivity" 
     android:screenOrientation="portrait"> 
     <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="mywebsite.com" android:scheme="http"/> 
      <data android:host="mywebsite.com" android:scheme="https"/> 
      <data 
       android:host="myapp.app.goo.gl/" 
       android:scheme="https" /> 
     </intent-filter> 
    </activity> 

, 브라우저가 열리고 내 응용 프로그램에 리디렉션하지만 예상대로 RouteListActivity에 SplashActivity에 열리고 없습니다.

내가 무엇인가 놓친가요?

내가이 문제를 극복 할 수있어 간단한 해결 방법을 찾은 것 같아요, 당신에게

+0

'android : host' 속성에서 마지막'/'를 제거하십시오. –

+0

@SimonMarquis 그래, 삭제했는데 변경은 없습니다. 내 앱이 아직 내 런처 활동에 의해 열리고 RouteListActivity가 열리지 않습니다 – GrayFox

+0

'myapp.app.goo.gl'항목이 필요하지 않습니다. 제거 할 수 있습니까? (그리고 mywebsite 항목에 다른 후행 데이터가 있는지 확인하십시오. –

답변

1

음을 감사드립니다.

동적 링크가 이전 버전에서 잘 작동하는 앱을 상기 시켰고 확인을 위해 다시 테스트했습니다 (here is a sample dynamic link to demonstrate it really works). 그래서 나는 그때 내가 한 일을 알기 위해 그 명단에갔습니다.

기본적으로,이 같은 텐트 필터에 android:autoVerify=true를 추가하는 것이 중요합니다 : 당신이 그것을 더 잘 이해하기 위해 here을 읽을 수

 <intent-filter 
      android:autoVerify="true"> 

그것은 앱 링크를 확인하기 위해 요청을 할 수 있습니다.

이 솔루션은 API 23에서만 작동하므로 "this tells the tools that you believe this element (and any children) will be used only on the specified API level or higher"으로 tools:targetApi="23"을 추가하고 원치 않는 Lint 강조 표시를 피하십시오.

그래서,이 처리하는 가장 좋은 방법은 다음과 같은 코드를 추가하는 것입니다 :

 <intent-filter 
      android:autoVerify="true" 
      tools:targetApi="23"> 

이 방법에 따라이 옵션을 간과 수있는 사용자의 끝에서 옵션 "을 기본으로 설정"을 언급하는 것이 중요합니다 사용자가 링크를 처리하는 방법에 대한 팝업 제공 옵션을 표시 할 수 있으므로 링크를 사용합니다. 두 가지 옵션이 내 앱과 기기를 고려하면 동일하게 보입니다.

<activity android:name=".Activity.SplashActivity" 
    android:theme="@style/SplashTheme" 
    android:screenOrientation="portrait"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

<activity android:name=".Activity.RouteListActivity" 
    android:screenOrientation="portrait"> 
     <intent-filter 
      android:autoVerify="true" 
      tools:targetApi="23"> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <category android:name="android.intent.category.BROWSABLE"/> 
     <data android:host="mywebsite.com" android:scheme="http"/> 
     <data android:host="mywebsite.com" android:scheme="https"/> 
     <data 
      android:host="myapp.app.goo.gl/" 
      android:scheme="https" /> 
    </intent-filter> 
</activity> 

을 그리고 매니페스트의 시작 부분에 xmlns:tools="http://schemas.android.com/tools"를 추가하는 것을 잊지 마세요 :이 문제의 샘플 매니페스트 파일의 존재에

,이 같을 것이다.

+1

잘 된 호르헤, 그 작품! 그러나 우리는 API> = 23을 목표로하기 때문에 이전 API에서 작동하지 않을 것이라고 생각합니다. – GrayFox

+1

죄송합니다. 이전 코드를 모두 덮어 쓰지 않았습니다. 불행히도이 코드는 API 25를 사용하는 동안 내 앱의 트릭이 아닙니다. – GrayFox

+0

예, API 23 이후에 사용할 수있는 기능이라고 생각합니다. 2/3 응용 프로그램을 테스트하는 동안 쉽게 작동하므로 정말 이상합니다.하지만 여전히 잘못된 것입니다. 확실하지는 않지만 홈페이지와 관련이 있다고 생각하지만 테스트를해야합니다. 대안 페이지를 사용하여 주요 활동을 실행하고 다른 활동을 추가하여 홈페이지를로드하고 있으며 홈페이지가 응용 프로그램과 혼동 될 수 있다고 생각합니다. 시간이 지나면 더 많은 테스트를하고 해결책을 찾으면 답을 편집하려고 노력할 것입니다. 내 앱 중 하나에서 작동하기 전에 "기본값으로 설정"해야했습니다. – JorgeAmVF