Password AutoFill 기능으로 저장된 암호의 도메인이 airbridge.io 또는 abr.ge로 보이는 현상이 앱을 사용하는 유저에게 발생할 수 있습니다.
에어브릿지 SDK의 딥링크를 설정한 후에 Password AutoFill 기능을 활용하면 도메인이 에어브릿지 딥링크의 앱 링크(applinks) 도메인 airbridge.io 또는 abr.ge로 저장됩니다.
Password AutoFill에 사용하는 Webcredentials 도메인을 설정하면 문제를 해결할 수 있습니다.
1. 암호를 저장하는 도메인을 준비해주세요.
2. 아래 JSON을 https://YOUR_DOMAIN/.well-known/apple-app-site-association
에 Content-Type: application/json
으로 호스팅합니다. 준비한 도메인이 YOUR_DOMAIN
입니다.
애플 개발자 대시보드의 [Identifiers]>[YOUR_APP]에서 App ID Prefix, Bundle ID를 확인할 수 있습니다.
{
"webcredentials": {
"apps": ["YOUR_APP_ID_PREFIX.YOUR_BUNDLE_ID"]
}
}
3. Xcode의 [YOUR_PROJECT]>[Signing & Capabilities]로 이동합니다.
4. '+ Capability'를 클릭해 Associated Domains를 추가합니다. Associated Domains에 webcredentials:YOUR_DOMAIN
을 입력합니다.
빌드하면 아래 메시지와 함께 Dependencies coroutines 오류가 발생합니다.
java.lang.NoClassDefFoundError: kotlin/coroutines/AbstractCoroutineContextKey
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
...
kotlinx-coroutines-core 라이브러리 버전이 v1.3.5 이상이면 kotlin-stdlib 라이브러리 버전이 일정 레벨 이상이어야 합니다.
gradlew dependencies
커멘드로 kotlin-stdlib 라이브러리 버전이 v1.3.70 이상인지 확인해 주세요. 해당 버전 미만이라면 업데이트를 진행해야 합니다.
브레이즈 SDK를 사용한 푸시 알림으로 발생한 딥링크 실행(Deeplink Open) 이벤트가 수집되지 않습니다. 대신 실행(Open) 이벤트가 수집됩니다.
에어브릿지 안드로이드 SDK는 activity의 action에 있는 dataString과 intent의 dataString으로 딥링크 실행 이벤트와 실행 이벤트를 판별합니다.
브레이즈 SDK를 사용한 푸시 알림으로 앱을 실행하면 NotificationTrampolineActivity
을 사용합니다. 브레이즈 SDK를 사용한 푸시 알림으로 앱을 실행하면 NotificationTrampolineActivity
의 activity의 action과 intent로부터 dataString을 확인할 수 없습니다. 이로 인해 딥링크 실행 이벤트와 실행 이벤트를 판별할 수 없습니다.
android/app/src/main/java/.../MainApplication.kt
파일에 아래와 같이 코드를 추가해주세요.
import co.ab180.airbridge.reactnative.AirbridgeReactNative
import co.ab180.airbridge.reactnative.common.AirbridgeLifecycleIntegration
...
AirbridgeReactNative.setLifecycleIntegration = { activity ->
return@setLifecycleIntegration activity
.takeIf { it.javaClass.name == "com.braze.push.NotificationTrampolineActivity" }
?.run { intent?.extras?.getString("uri") }
}
import co.ab180.airbridge.reactnative.AirbridgeReactNative;
import co.ab180.airbridge.reactnative.common.AirbridgeLifecycleIntegration;
...
AirbridgeReactNative.setLifecycleIntegration(new AirbridgeLifecycleIntegration() {
@Nullable
@Override
public String getDataString(@NonNull Activity activity) {
if (
activity.getClass().getName().equals("com.braze.push.NotificationTrampolineActivity")
&& activity.getIntent() != null
&& activity.getIntent().getExtras() != null
) {
return activity.getIntent().getExtras().getString("uri");
}
return null;
}
});
빌드하면 Manifest merger failed 오류가 발생합니다.
안드로이드 앱에서 Auto Backup
을 사용하면 Auto Backup Rules
의 정의가 필요합니다. 해당 정의와 에어브릿지 안드로이드 SDK 내부 데이터의 자동 복제를 방지하기 위해 별도로 정의한 airbridge_auto_backup_rules.xml
과 충돌해 Manifest merger failed이 발생할 수 있습니다.
에어브릿지 SDK에서 정의하는 Auto Backup Rules
는 아래과 같습니다. 아래 내용을 포함하는 xml file을 프로젝트에 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="airbridge-internal" />
<exclude domain="sharedpref" path="airbridge-install" />
<exclude domain="sharedpref" path="airbridge-user-info" />
<exclude domain="sharedpref" path="airbridge-user-alias" />
<exclude domain="sharedpref" path="airbridge-user-attributes" />
<exclude domain="database" path="airbridge.db" />
</full-backup-content>
AndroidManifest.xml
에 아래 내용을 설정합니다.
<application
...
android:allowBackup="true"
android:fullBackupContent="@xml/<CUSTOM_BACKUP_RULES>"
tools:replace="android:fullBackupContent">
...
</application>
아래 가이드를 함께 참고해 주세요.
도움이 되었나요?