Branch.io SDK для Unity3d не инициализируется при сборке Android.Я использую это для глубоких ссылок, но, как я вижу по журналам отладки, он даже не инициализируется при запуске приложения (обычно в сборке iOS я вижу некоторые журналы, но Android пуст).Я использую последнюю версию Branch.io SDK и Unity3d 2018.3.9f1
. Я понял, что стандартная кнопка «Обновить AndroidManifest» не работает с префабом «BranchPrefab».Это просто ничего не делать.Я пробовал разные комбинации, чтобы установить манифест вручную, используя документы (что, кажется, не актуально) / образцы проектов / форумы, но безрезультатно.Я связался со службой поддержки branch.io, но они были бесполезны.Они предоставили мне «исправленный» манифест, который на самом деле не работает.Вот оно:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.myproject.package">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name=".SampleBranchApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- Branch init -->
<meta-data
android:name="io.branch.sdk.BranchKey"
android:value="key_live_my_key_here"/>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask">
<!-- AppLink example -->
<!-- Branch App Links (optional) -->
<intent-filter android:autoVerify="true"
tools:targetApi="m">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="tdetectives.app.link"
android:scheme="https"/>
<data
android:host="tdetectives-alternate.app.link"
android:scheme="https"/>
</intent-filter>
<!-- Branch URI Scheme -->
<intent-filter>
<data
android:host="open"
android:scheme="tdetectives"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Branch install referrer tracking (optional) -->
<receiver
android:name="io.branch.referral.InstallListener"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
</application>
</manifest>
В результате не работает Deeplink, динамическое создание и совместное использование ссылок не работает, SDK не инициализирован ...
ОБНОВЛЕНО После многих часов я обнаружил, что ветка sdk не сливается, это манифест с основным манифестом, и поэтому ресурсы не были загружены.Кажется, это работает только тогда, когда вообще нет главного манифеста.После выполнения трюка автоматическое обновление манифеста сделало это:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.myapp.app" android:versionCode="1" android:versionName="1.0">
<application android:label="@string/app_name" android:icon="@drawable/app_icon" android:name="io.branch.unity.BranchUnityApp">
<!-- The MessagingUnityPlayerActivity is a class that extends
UnityPlayerActivity to work around a known issue when receiving
notification data payloads in the background. -->
<activity android:name="com.google.firebase.MessagingUnityPlayerActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTask">
<intent-filter>
<data android:host="open" android:scheme="myAppUrlScheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<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="myapp.app.link" />
<data android:scheme="https" android:host="myapp-alternate.app.link" />
</intent-filter>
</activity>
<service android:name="com.google.firebase.messaging.MessageForwardingService" android:exported="false" />
<meta-data android:name="io.branch.sdk.TestMode" android:value="false" />
<meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_my_key" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>```
For now branch sdk initialise well, deeplink sharing works, but not the opening the app by deeplink click. So, if the app is running in background and I click the deeplink app just restarts without providing the parameters. If app is closed, that just do nothing (app attempts to start, but stacks)
Seems there is some conflict with activities from Firebase Messaging. I am not good with that, may be I am wrong.
Any suggestions?