使用React-Native在Android上收听传入链接

时间:2016-06-06 09:20:12

标签: android react-native deep-linking

我能够使用链接库https://facebook.github.io/react-native/docs/linking.html使用react-native监听和处理IOS上的传入链接,但它显示为URL添加事件侦听器的功能是IOS平台特定的。有没有其他方法可以在Android上监听我的应用程序的传入链接并在Javascript端处理它?<​​/ p>

1 个答案:

答案 0 :(得分:5)

我刚刚开始工作!您只需要关注these instructions

基本上,在<intent-filter>的现有{{}}}下添加android/app/src/main/AndroidManifest.xml,其中包含VIEW操作,DEFAULTBROWSABLE类别,并且至少<data>

然后只需重建并重新安装您的APK(react-native run-android),即可!与您的<data>代码匹配的链接现在将在您的应用中打开!

现在只需在主Javascript类的componentDidMount()中使用Linking.getInitialURL()抓住此网址!

清单示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="net.yourapp"
  android:versionCode="1"
  android:versionName="0.1">

  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

  <uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="22" />

  <application
    android:name=".MainApplication"
    android:allowBackup="true"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:icon="@mipmap/ic_launcher"
    android:theme="@style/AppTheme">

    <activity
      android:name=".MainActivity"
      android:label="@string/app_name"
      android:screenOrientation="portrait"
      android:configChanges="keyboard|keyboardHidden|screenSize">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

      <!-- HERE: -->
      <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="https"
          android:host="yoursite.net" />
        <data android:scheme="https"
          android:host="yoursite.net" />
        <data android:scheme="https"
          android:host="yoursite" />
        <data android:scheme="customscheme"
          android:host="yourpath" />
      </intent-filter>

    </activity>
    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
  </application>

</manifest>