2017-10-07 3 views
2

저는 Branch.io를 사용하는 앱이 있으며 인스턴트 앱을 지원하도록 업데이트 중입니다. 이 변경 사항 중 일부는 앱 링크를 사용하여 앱의 한 부분에서 다른 부분으로 이동해야합니다.Branch.io 및 인스턴트 앱

내가 열리고있는 활동은 Branch.io를 사용하도록 구성되었으며 (예 : https://dev.branch.io/marketing-channels/android-instant-apps/guide/의 지침을 사용) 그 다음은 onStart() 방법을 포함합니다. 그러나 나는 깊은 링크에 referringParams의 매개 변수를 포함하고 있지 않습니다.

Branch.getInstance().initSession(new Branch.BranchReferralInitListener() { 
    @Override 
    public void onInitFinished(JSONObject referringParams, BranchError error) { 
     Log.d("Branch", "onInitFinished() with deep link data: " + referringParams); 
    } 
}); 

는이 작업을 위해 내가 안드로이드 코드에서 특정 방식으로 분기 링크의 오프닝을 트리거해야합니까?

위의 BTW referringParams+clicked_branch_linkfalse입니다.

UPDATE 그냥 몇 가지를 명확히한다. 예를 들어 ActivityA에서 앱 딥 링크를 사용하여 ActivityB을 시작하려고합니다. ActivityB은 예를 들어 https://dev.branch.io/marketing-channels/android-instant-apps/guide/에 기술 된 바와 같이 <intent-filter>을 포함한다. ActivityA에서 나는 현재/열고 다음과 같이 Branch.io 링크를 만들려고 해요 (예를 들어 그 android-instant-apps 샘플에서 사용되는 또한, 직접 링크를 형성했지만, 그는 "지점 링크"로 간주되지 것)

HashMap<String, String> metadata = new HashMap<>(); 
    metadata.put(PARAM, param); 

    BranchUniversalObject branchUniversalObject = new BranchUniversalObject().addContentMetadata(metadata); 
    LinkProperties linkProperties = new LinkProperties(); 
    branchUniversalObject.generateShortUrl(context, linkProperties, (url, error) -> { 
     if (error == null) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      context.startActivity(intent); 
     } 
    }); 

장치에 직접 생성 된 URL (generateShortUrl)을 열려고 시도하면 (예 : 링크 클릭) ActivityB이 실행되고 initSession 콜백에 포함 된 매개 변수가 표시됩니다. 나는 위의 코드를 사용하여 열려고하면 (안드로이드 응용 프로그램은 인스턴트 앱 지점 SDK를 구성하려면

+0

키 불일치'+ clicked_branch_link'의 PARAM은 'FALSE'를 반환하는 원인이 될 수 있습니다. 올바른 테스트/라이브 지점 키를 설정했는지 다시 한 번 확인하십시오 (https://stackoverflow.com/questions/38763840/no-deep-link-data 참조). 또한 지점 링크와 키가 동일한 지점 응용 프로그램에 속하는지 확인하십시오. –

+0

앱 링크를 여는 코드에서 branch.io 키가 재생 되나요? 그렇다면 링크를 여는 데 특정 분기 코드가 필요하다는 의미입니까? –

+0

딥 링크 데이터를 수신하려면 딥 링크 라우터 기능을 등록해야합니다 ('initSession'을 호출하는 Activity에서 onNewIntent()를 오버라이드). 그런 다음 'branch.getLatestReferringParams'를 호출하여 세션 매개 변수를 검색하십시오 https://github.com/BranchMetrics/android-branch-deep-linking#initialization –

답변

0

) 지원되는 betweeen ActivityA 다음 ActivityB가 시작됩니다 ActivityB를 탐색하지만 PARAMS을하지 않습니다 (그리고 +clicked_branch_linkfalse입니다 . 아래의 단계를 수행 할 수 있습니다

1 지점 SDK 를 초기화를하지 OnCreate 지점 SDK() 응용 프로그램 클래스의 방법을 초기화 당신은 당신의 전체 안드로이드에 안드로이드 인스턴트 앱에서 딥 링크에 계획하는 경우 응용 프로그램을 설치 한 후에는 enablePlayStoreReferrer 행을 추가해야합니다. 이렇게하면 initializea에 지연이 추가됩니다 Google Play 리퍼러를 기다리는 중입니다.이 작업에는 최대 1 초가 걸릴 수 있습니다.

public void onCreate() { 
    super.onCreate(); 
    // This is needed to deferred deep link from an Android Instant App to a full app 
    // It tells the Branch initialization to wait for the Google Play Referrer before proceeding. 
    Branch.enablePlayStoreReferrer(1000L); 

    // Initialize the Branch SDK 
    Branch.getAutoInstance(this); 
} 

2. 당신의 지점 키를 추가하고 다양한 매니페스트 있기 때문에 다소 혼란 스러울 수 있습니다 추천자

인스턴트 앱을 설치 등록,하지만 당신은 응용 프로그램 태그를 포함하는 매니페스트를 찾고 싶어요. 응용 프로그램 클래스 이름이 여기에 정의되어 있는지 확인한 다음 응용 프로그램 요소 내에 분기 키를 지정하십시오.

<application 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:supportsRtl="true" 
     android:name=".MyApplication"> 

<!-- Set to true to use Branch_Test_Key --> 
    <meta-data android:name="io.branch.sdk.TestMode" android:value="false" /> 
    <meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_app_live_key" /> 
    <meta-data android:name="io.branch.sdk.BranchKey.test" android:value="key_test_app_test_key" /> 

    <receiver android:name="io.branch.referral.InstallListener" android:exported="true"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
    </receiver> 

</application> 

구성 3. 안드로이드 앱 같은 지점 링크

다음 단계는 앱 링크에 대한 인 텐트 필터를 추가하는 것입니다 당신을 가정

이미 안드로이드 앱 안드로이드 앱 링크에 대한 지점을 구성한 링크 응용 프로그램 태그에서 지원.도메인 을 귀하의 링크 도메인으로 바꾸십시오. (당신이 안드로이드 앱 링크로 지점을 사용하는 전체 네이티브 응용 프로그램을 구성하지 않은 경우에는 단계 herehere 언급 따를 수 있습니다.)

<application 
    ...... 

    <intent-filter android:autoVerify="true"> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="https" android:host="xxxx.app.link" /> 
     <data android:scheme="https" android:host="xxxx-alternate.app.link" /> 
    </intent-filter> 

</application> 

4. 지점 딥 링크 데이터를 검색

추가 딥 링크 매개 변수를 수신하려면 링크에서 열도록 구성된 활동의 지점 초기화 세션을 클릭하십시오. 참조 연결에서 딥 링크 데이터가 반환됩니다.

protected void onStart() { 
    super.onStart(); 
    Branch.getInstance().initSession(new Branch.BranchReferralInitListener() { 
    @Override 
    public void onInitFinished(JSONObject referringParams, BranchError error) { 
     Log.d("Branch","onInitFinished() with deep link data: " + referringParams); 
    } 
    }); 
} 

5. 구성하여 전체 응용 프로그램에 즉시 앱에서 딥 링크는

단지 전체 네이티브 응용 프로그램에 즉시 앱에 도착 사용자를 변환하려면, 분기 SDK는 편리한 방법을 확인하기 위해 제공 앱 유형 및 전체 앱 전환의 경우 이렇게하면 Google IA 지원 SDK ('com.google.android.instantapp')에 대한 의존성이 제거됩니다. 여기에 몇 가지 방법은 다음과 같습니다

Branch.isInstantApp()

이 편리한 메소드 검사 응용 프로그램 실행의 현재 버전은 즉시 응용 프로그램 또는 전체 안드로이드 앱

Branch.showInstallPrompt()

이 방법인지가 프롬프트를 설치 보여줍니다 완전한 안드로이드 애플 리케이션, 당신에게 지점을 설치 프로세스를 통해 전체 애플 리케이션에 깊은 데이터를 추천 전달하는 쉬운 방법을 허용. 여기 지점에서

+0

앱의 일부에서 다른 앱으로 이동할 때 Branch.io 앱 링크를 열 때 권장되는 방법은 무엇입니까? –

+0

위의 내용은 https://dev.branch.io/marketing-channels/android-instant-apps/guide/에서 직접 가져온 것일까 요? 언급 한 바와 같이, 나는이 지시들을 따랐다. –

+0

@ JohnO'Reilly는 여전히 + clicked_branch_link : false가 표시됩니다. 또한 표준 앱에서 링크 매개 변수를 올바르게 가져 옵니까? –

1

Sojan 다른 즉시 응용 프로그램 APK unfortunetely 지점에서 새로운 기능에 대한 딥 링크하려고하는 경우 이제이 기능을 지원하지 않습니다.

설치된 앱의 다른 기능에서 활동 A의 새로운 기능에서 활동 B를 여는 중 딥 링크 매개 변수를 얻으려면 다음과 같은 방법으로이를 수행 할 수 있습니다.

ActivityA.java

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("yourBranchLink")); 
intent.putExtra("branch","yourBranchLink"); 
intent.putExtra("branch_force_new_session",true); 

희망이

+0

Sojan에게 감사드립니다. –

+0

Sojan, 이것을 달성하기 위해 Branch 대시 보드에서 빠른 링크를 만들어 Uri.parse ("yourBranchLink")에 사용해야합니다. 맞습니까? 그런 다음이 링크에 대한 매니페스트에 특정 인 텐트 필터를 넣으시겠습니까? –

+0

@GuilhermeLimaPereira 대시 보드에서 빠른 링크를 생성하면됩니다. 또한 응용 프로그램을 구성하려는 경우 Branch Link를 동적으로 생성하여 여기에서 설명한대로 사용할 수 있습니다. (매니페스트에 인 텐트 필터가 필요함) https://github.com/BranchMetrics/android-branch-deep-linking#creating-a-deep-link –

관련 문제