我有 Android&使用cordova开发的IOS 应用程序。我有一个场景,我必须从作为邮件发送的链接打开我的移动应用程序。
我使用的插件是 Cordova Universal Links Plugin ,我也遵循相同的方法来包含链接并从链接中打开应用程序。
该插件的链接是here.当我尝试打开该应用时,其失败。如何创建作为邮件发送以打开移动应用程序的链接?
JS代码是
var app = {
// Application Constructor
initialize: function () {
this.bindEvents();
},
// Bind Event Listeners
bindEvents: function () {
document.addEventListener('deviceready', onDeviceReady.bind(this), false);
},
// deviceready Event Handler
onDeviceReady: function () {
console.log('Device is ready for work');
universalLinks.subscribe('openNewsListPage', app.onNewsListPageRequested);
universalLinks.subscribe('openNewsDetailedPage', app.onNewsDetailedPageRequested);
document.addEventListener('pause', onPause.bind(this), false);
document.addEventListener('resume', onResume.bind(this), false);
// TODO: Cordova has been loaded. Perform any initialization that requires Cordova here.
var parentElement = document.getElementById('deviceready');
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
},
// openNewsListPage Event Handler
onNewsListPageRequested: function (eventData) {
console.log('Showing list of awesome news.');
// do some work to show list of news
},
// openNewsDetailedPage Event Handler
onNewsDetailedPageRequested: function (eventData) {
console.log('Showing to user details page: ' + eventData.path);
// do some work to show detailed page
}
};
app.initialize();
的Config.xml
<universal-links>
<host name="myhost.com">
<path url="/news/" event="openNewsListPage" />
<path url="/news/*" event="openNewsDetailedPage" />
</host>
答案 0 :(得分:0)
我正试图通过使用另一个插件来回答这个问题。好吧,今天天气很好:D 就我而言,我有制作重置密码链接以打开应用的经验
这同样适用于Android和iOS。
如何创建链接以邮件形式发送以打开手机 申请吗?
您可以尝试使用此https://ionicframework.com/docs/native/deeplinks
此插件可以处理iOS和Android上的自定义URL方案链接和通用应用链接的深层链接。
第1步:将Cordova和ionic native插件安装到您的项目中
npm install @ionic-native/deeplinks
ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapps --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=domain.oo--variable ANDROID_PATH_PREFIX=/
第2步:将其添加到app.component.ts
getDeeplink() {
this.deeplinks.route({
'/reset/:data': ForgotPasswordPage
}).subscribe((match) => {
console.log('Successfully matched route', match);
// contains original string
let data = match.$link.path;
// email string
let email = data.slice(7);
email = email.substring(0, email.indexOf("&"));
// token string
let token = data.split("&").pop();
// contains email and token from email
let objectData = {
email,
token
}
console.log(email);
console.log(token);
console.log(objectData);
let navigationExtras: NavigationExtras = {
state: {
data: objectData
}
}
this.router.navigate(['/reset-password'], navigationExtras);
}, (nomatch) => {
console.error('Got a deeplink that didn\'t match', nomatch);
});
}
在单击电子邮件中的链接后,让我解释一下(基本上来自https://domain.oo/redirect/的链接包含重定向到深层链接的代码,它重定向到
myapps://reset/myemail@gmail.com&2ahUKEwjKyPSbwZvpAhU0ErcAHXIbCVsQ_AUoAHoECAEQAA
重置在函数内部声明,如您所见 / reset /:data :数据包含电子邮件和令牌,您可以使用它们重置密码。
它捕获了此深层链接,您可以在 match。$ link.path; 中检索值,并使用路由器将其传递到下一页。
您可以在准备就绪的平台内使用此功能:
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.hide();
this.statusBar.styleDefault();
this.splashScreen.hide();
this.getDeeplink();
});
}
如果您想在不单击链接的情况下测试应用程序内的深层链接,则可以在Android上使用Android调试桥(ADB) 来源:I am trying to test android deep link urls through adb to launch my app
adb shell开始-android.intent.action.VIEW -d“ myapps://reset/testing@domain.com&2ahUKEwjKyPSbwZvpAhU0ErcAHXIbCVsQ_AUoAHoECAEQAA” com.myapp