我正在开发一个离子项目。 我已经完成了安装社交共享和深层链接的所有步骤。
这是我安装插件时的架构。
ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=app --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=app.com --variable ANDROID_PATH_PREFIX=/
但是当我与社交分享分享时,请不要发送网址,社交分享会以字符串形式发送或通过电子邮件发送一些结构作为字符串,另一部分作为网址发送。
e.g。通过环聊作为字符串
e.g。通过电子邮件app://app.com/page - > app:// as string和app.com/page as url
在社交共享文档架构中,共享(meesage,subject,file,url)
message:string,subject:string,file:string | Array,url:string
this.socialSharing.share('Lorem ipsum', 'title', null, 'app://app.com/about')
.then( ()=> {
console.log('Success');
})
.catch( (error)=> {
console.log('Error: ', error);
});
当我使用带有hiperlink的codepen.io中的浏览器测试时,应用程序打开了深层链接。
< h1 >< a href="app://app.com/about" >Click Me< /a>< /h1>
但是当我分享一个深层链接发送为字符串。
为什么???你能救我吗?
答案 0 :(得分:2)
我遇到了同样的问题,解决方案非常直接:
请勿使用自定义网址
不使用自定义网址方案的主要原因是Gmail和其他网络邮件提供商确实会破坏“app:// ...”等链接。所以没有办法让这项工作。
有关详细信息,请参阅以下链接:
改为使用通用链接
Android和iOS支持通用链接。由于您已经在使用ionic-plugin-deeplinks插件,因此您已经配置了深层链接URL。 你所要做的就是改变
到
要使用通用链接,您需要为Android和iOS创建配置文件。这些文件必须包含该站点要与之共享凭据的所有应用程序的应用程序标识符。有关详细信息,请参阅以下链接:
该文件必须完全位于您的网站上
答案 1 :(得分:0)
如果存在,您还可以从自定义URL和深链接中获取数据。否则,请像这样重定向到Play / App商店:
$(document).ready(function (){
var lifestoryId = getParameterByName('lifestoryId');
if(navigator.userAgent.toLowerCase().indexOf("android") > -1){
setTimeout(function () {
window.location.href = "http://play.google.com/store/apps/details?id=com.android.xyz&hl=en";
}, 5000);
}
if(navigator.userAgent.toLowerCase().indexOf("iphone") > -1){
setTimeout(function () {
window.location.href = "https://itunes.apple.com/us/app/app/id12345678?ls=1&mt=8";
}, 5000);
}
window.location.href = "app://lifestory/info:"+lifestoryId;
});
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
呼叫链接,例如:BASE_URL/index.html?lifestoryId=123