观察: 1)当应用程序启动设备就绪事件触发时,用户将杀死该应用程序。 如果用户点击应用程序链接,该插件将正确打开应用程序并转到相应的页面。(此处onDevice ready将触发,deeplink observable为崩溃的深层链接服务)。 2)后续步骤1当应用程序切换时,在暂停触发器上,现在用户点击来自gmail的应用程序链接,此处插件打开应用程序,并且" onResume"事件被称为。 问题:相同的ondeviceready .subscribe()是否会服务于同一场景?就我而言,它并没有发生。它永远不会适用于所有后续暂停/恢复(翻转应用程序并再次回到应用程序)。
为了解决这个问题,我在onResume块上添加了相同的调用:
$cordovaDeeplinks.route({
'#/home/xyz': {
target: 'xyz',
parent: 'home'
}
}).subscribe(
function(match) {
}, function (nomatch) { //Since my url doesn't match, i am handling the navigation on nomatch.
var loc = nomatch.$link.fragment;
$rootScope.$apply(function() {
$location.path(loc);
});
}
);
总而言之,我在ondeviceready和onresume call上都有深层链接路由逻辑。
它适用于所有场景,除了: 如果已经消耗了ondeviceready deeplink,则在第一次onresume调用。 1)应用程序启动,ondevice ready事件触发,然后用户杀死应用程序。 2)用户点击了Gmail和应用程序打开的链接。 3)现在切换应用程序并再次单击链接 - 失败----(这是唯一失败的情况) 4)重复步骤3 - 通过 - 工作正常 5)重复步骤3 - 通过 - 工作正常
进一步调试,以下是: 设备就绪:我的应用程序上的观察者在插件上创建deeplink对象之前被调用 On Resume:在插件上创建deeplink对象后调用我的app上的观察者。
要解决此问题,现在我已经更改了我的onprevice ready代码,如下所示,并从onresume中删除了深层链接代码。
//outside onready
function subscribe_deeplink(){
$cordovaDeeplinks.route({
'#/home/xyz': {
target: 'xyz',
parent: 'home'
}
}).subscribe(
function(match) {
}, function (nomatch) {
$rootScope.isNavigated = true;
var loc = nomatch.$link.fragment;
subscribe_deeplink();
$rootScope.$apply(function() {
$location.path(loc);
});
}
);
}
//inside onready
$cordovaDeeplinks.route({
'#/home/xyz': {
target: 'xyz',
parent: 'home'
}
}).subscribe(
function(match) {
}, function (nomatch) {
$rootScope.isNavigated = true;
var loc = nomatch.$link.fragment;
subscribe_deeplink();
$rootScope.$apply(function() {
$location.path(loc);
});
}
);
现在,深度链接适用于所有场景中的应用程序..
我想知道一些事情: 1)这是一种建议的方式继续前进吗???? 2)为什么不在deeplink插件上讨论onresume场景。你如何处理简历方案。我错过了一些不足之处
答案 0 :(得分:0)
在Branch.io,我们实际上已将onDeviceReady
和onResume
挂钩。基本框架:
onDeviceReady: function() {
Branch.initSession();
},
onResume: function() {
Branch.initSession();
},
initialize: function() {
document.addEventListener('resume', onResume, false);
document.addEventListener('deviceready', onDeviceReady, false);
},
function DeepLinkHandler(data) {
alert('Data from initSession: ' + data.data);
}
这显然不是与深度链接插件的完美关联,但可能有用作参考点。
无耻插件:您还可以查看Branch.io深层链接平台,因为它可以完成所有相同的操作,还有一些额外的好处,例如延迟深层链接和归因分析。