2016-12-20 8 views
0

내 애플 리케이션에서 firebase 동적 링크를 구성하려고하지만 몇 가지 문제에 직면하고 있습니다.내 애플 리케이션에서 파이어베이스 deeplinks 구성의 문제

다음을 수행했습니다 : 1. Firebase 콘솔 설정 완료. 매니페스트 2. 내 코드 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.manpsing.deeplinkdemo"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

      <!-- [START link_intent_filter] --> 
      <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="example.com" 
        android:scheme="https"/> 
      </intent-filter> 
      <!-- [END link_intent_filter] --> 
     </activity> 
    </application> 

</manifest> 
    주요 활동에
  1. 코드 :

    공용 클래스 MainActivity가 AppCompatActivity가 {

    private static final String TAG = "MainActivity"; 
    private static final String DEEP_LINK_URL = "https://example.com/deeplinks"; 
    
    // [START define_variables] 
    private GoogleApiClient mGoogleApiClient; 
    // [END define_variables] 
    
    // [START on_create] 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // [START_EXCLUDE] 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        // Validate that the developer has set the app code. 
        validateAppCode(); 
    
        // Create a deep link and display it in the UI 
        final Uri deepLink = buildDeepLink(Uri.parse(DEEP_LINK_URL), 0, false); 
        ((TextView) findViewById(R.id.link_view_send)).setText(deepLink.toString()); 
    
        // Share button click listener 
        findViewById(R.id.button_share).setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          shareDeepLink(deepLink.toString()); 
         } 
        }); 
        // [END_EXCLUDE] 
    
        // [START build_api_client] 
        // Build GoogleApiClient with AppInvite API for receiving deep links 
        mGoogleApiClient = new GoogleApiClient.Builder(this) 
          .enableAutoManage(this, this) 
          .addApi(AppInvite.API) 
          .build(); 
        // [END build_api_client] 
    
        // [START get_deep_link] 
        // Check if this app was launched from a deep link. Setting autoLaunchDeepLink to true 
        // would automatically launch the deep link if one is found. 
        boolean autoLaunchDeepLink = false; 
        AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink) 
          .setResultCallback(
            new ResultCallback<AppInviteInvitationResult>() { 
             @Override 
             public void onResult(AppInviteInvitationResult result) { 
              if (result.getStatus().isSuccess()) { 
               // Extract deep link from Intent 
               Intent intent = result.getInvitationIntent(); 
               String deepLink = AppInviteReferral.getDeepLink(intent); 
    
               // Handle the deep link. For example, open the linked 
               // content, or apply promotional credit to the user's 
               // account. 
    
               // [START_EXCLUDE] 
               // Display deep link in the UI 
               ((TextView) findViewById(R.id.link_view_receive)).setText(deepLink); 
               // [END_EXCLUDE] 
              } else { 
               Log.d(TAG, "getInvitation: no deep link found."); 
              } 
             } 
            }); 
        // [END get_deep_link] 
    } 
    
  2. GoogleApiClient.OnConnectionFailedListener를 구현 확장
  3. 내 strings.xml 파일은 다음과 같습니다.

    내가이의 동적 링크를 작성하지 않은 추측

<!-- 
    Your app code, see: 
    https://firebase.google.com/docs/dynamic-links/android 
--> 
<string name="app_code">pgm3j</string> 


<string name="share">Share</string> 
<string name="title_receive">Receive</string> 
<string name="title_send">Send</string> 
<string name="msg_no_deep_link">No deep link received.</string> 

을 DeeplinkDemo. 하나 만드는 방법을 알려주세요. 또한이 동적 링크를 사용하는 방법, 즉 내가 열어야하는 URL과 가리킬 곳을 알려주십시오.

또한 기기에이 앱을 설치하려고 할 때 설치되지 않습니다. 설치되지 않은 이유를 모르겠습니다.

감사

답변

0

동적 링크를 처리하는 두 비트가 있습니다

1) 취급 정기적으로 딥 링크

이 앱이 URL을 처리하고 의미가. 올바른 방향 인 example.com에 대한 의도 필터를 추가했지만 해당 필터를 Google 도메인에 바꿔야합니다. 가지고 있지 않다면 Firebase 프로젝트와 함께 제공되는 [yourproject] .firebaseapp.com을 사용할 수 있습니다! 열린 URL에서 발생하는 의도를 분석하고, 딥 링크를 추출 -

2) 구문 분석이 당신의 AppInviteApi 코드가 그렇게되어 여기에 좋은있어 무엇 URL을

을 받았다. 프로덕션 앱의 경우 동일한 코드가 Play 스토어를 통해 전달 된 데이터도 검색하므로 사용자가 앱을 설치해야하는 경우에도 링크가 작동합니다.

마지막으로 링크를 생성하는 가장 쉬운 방법은 Firebase Console의 동적 연결 부분을 사용하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 어떤 URL을 장치/웹 브라우저에 입력해야 자동으로 동일한 활동에서 내 응용 프로그램을 열 수 있습니까? –

+0

내 목표는 모바일 브라우저 또는 웹 브라우저의 어느 곳에서나 딥 링크 URL을 치는 것이고 내 앱에서 주력을 열어야합니다. 심지어 deeplink URL을 가진 일부 매개 변수를 보내고 애플 리케이션에서 이러한 매개 변수를 가져오고 싶지만 여전히 1 단계에 머물러 있습니다. 딥 링크를 통해 앱을 열 수 없습니다. –

+0

모바일 및 웹 브라우저에서 https://example.com을 시도하고 있는데 내 앱이 열리지 않습니다. –