Titanium 中的 Firebase 动态链接问题
Problem with Firebase Dynamic Links in Titanium
我正在努力将 Firebase 动态链接添加到我的应用程序中。我创建了一个本地模块,可在此处获得:Titanium Firebase DynamicLinks。该模块的核心方法是handleDeepLink()
:
@Kroll.method
public void handleDeepLink() {
Activity currentActivity = TiApplication.getAppRootOrCurrentActivity();
Intent intent = currentActivity.getIntent();
if (intent == null) {
return;
}
Log.w(LCAT, "Links instance not null: " + (FirebaseDynamicLinks.getInstance() != null));
Log.w(LCAT, "current activity not null: " + (currentActivity != null));
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener(currentActivity, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
KrollDict queryParams = new KrollDict();
Set<String> queryParamNames = deepLink.getQueryParameterNames();
for (String paramName : queryParamNames) {
queryParams.put(paramName, deepLink.getQueryParameter(paramName));
}
fireEvent("deeplink:new", queryParams);
}
}
})
.addOnFailureListener(currentActivity, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
fireEvent("deeplink:error", e.getMessage());
}
});
}
我已将它添加到我的演示 Alloy 应用程序中并按以下方式使用它:
$.index.addEventListener('open', () => {
const Firebase = require('com.pmitkowski.firebase.dynamiclinks');
Firebase.addEventListener('deeplink:new', (params) => {
console.warn('deep link params', params);
});
Firebase.addEventListener('deeplink:error', (error) => {
console.error(error);
});
Firebase.handleDeepLink();
});
$.index.open();
我的 index.xml
文件:
<Alloy>
<Window class="container">
<Label id="label" onClick="doClick">Hello, World</Label>
</Window>
</Alloy>
问题是,每次我在 Android 模拟器上 运行 我的应用程序时,我都会收到错误消息:
[ERROR] V8Exception: Exception occurred at /alloy/controllers/index.js:74: Uncaught Error: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.dynamiclinks.FirebaseDynamicLinks.getDynamicLink(android.content.Intent)' on a null object reference
我模块中的 FirebaseDynamicLinks.getInstance()
方法,实际上是 returns null
,但这不是它应该如何工作的方式,我不知道为什么会这样。我确定 Firebase 在调用此方法之前会自行初始化(我可以在日志中看到它)。你能帮我解决这个问题吗?
我不确定如何使用 SDK 版本 8.3.1 解决此问题,但是当我切换到 9.0.0 并通过 Gradle 而不是使用普通 .aar 和导入 Firebase 动态链接依赖项时.jar 依赖项,它开始正常工作。
我正在努力将 Firebase 动态链接添加到我的应用程序中。我创建了一个本地模块,可在此处获得:Titanium Firebase DynamicLinks。该模块的核心方法是handleDeepLink()
:
@Kroll.method
public void handleDeepLink() {
Activity currentActivity = TiApplication.getAppRootOrCurrentActivity();
Intent intent = currentActivity.getIntent();
if (intent == null) {
return;
}
Log.w(LCAT, "Links instance not null: " + (FirebaseDynamicLinks.getInstance() != null));
Log.w(LCAT, "current activity not null: " + (currentActivity != null));
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener(currentActivity, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
KrollDict queryParams = new KrollDict();
Set<String> queryParamNames = deepLink.getQueryParameterNames();
for (String paramName : queryParamNames) {
queryParams.put(paramName, deepLink.getQueryParameter(paramName));
}
fireEvent("deeplink:new", queryParams);
}
}
})
.addOnFailureListener(currentActivity, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
fireEvent("deeplink:error", e.getMessage());
}
});
}
我已将它添加到我的演示 Alloy 应用程序中并按以下方式使用它:
$.index.addEventListener('open', () => {
const Firebase = require('com.pmitkowski.firebase.dynamiclinks');
Firebase.addEventListener('deeplink:new', (params) => {
console.warn('deep link params', params);
});
Firebase.addEventListener('deeplink:error', (error) => {
console.error(error);
});
Firebase.handleDeepLink();
});
$.index.open();
我的 index.xml
文件:
<Alloy>
<Window class="container">
<Label id="label" onClick="doClick">Hello, World</Label>
</Window>
</Alloy>
问题是,每次我在 Android 模拟器上 运行 我的应用程序时,我都会收到错误消息:
[ERROR] V8Exception: Exception occurred at /alloy/controllers/index.js:74: Uncaught Error: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.dynamiclinks.FirebaseDynamicLinks.getDynamicLink(android.content.Intent)' on a null object reference
我模块中的 FirebaseDynamicLinks.getInstance()
方法,实际上是 returns null
,但这不是它应该如何工作的方式,我不知道为什么会这样。我确定 Firebase 在调用此方法之前会自行初始化(我可以在日志中看到它)。你能帮我解决这个问题吗?
我不确定如何使用 SDK 版本 8.3.1 解决此问题,但是当我切换到 9.0.0 并通过 Gradle 而不是使用普通 .aar 和导入 Firebase 动态链接依赖项时.jar 依赖项,它开始正常工作。