cordova调用第三方应用

Posted zzsdream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cordova调用第三方应用相关的知识,希望对你有一定的参考价值。

cordova 帮助webapp 达到调用原生系统的功能

项目需求:在项目中调用系统中含有的第三方地图应用

需求其实分为两步:

      1. 查找本地地图应用

      2.成功调起本地应用

首先需要安装两个插件,安装指令如下:

      1. cordova plugin add cordova-plugin-appavailability --save

      2. cordova plugin add https://github.com/lampaa/com.lampa.startapp.git

第一个安装的是检测应用包名的插件,第二个安装的是启动第三方应用的插件

检测代码:

appAvailability.check("com.baidu.BaiduMap",function () {
//success callback
},function () {
//error callback
});
启动代码:

var sApp = startApp.set({ /* params */
"action":"ACTION_VIEW",
"category":"CATEGORY_DEFAULT",
"type":"text/css",
"package":"com.baidu.BaiduMap",
"uri":"baidumap://map/direction?origin=name:"+originName+"|latlng:"+origin[0]+","+origin[1]+"&destination=name:"+destinationName+"|latlng:"+destination[0]+","+destination[1]+"&mode=driving",
"flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
"intentstart":"startActivity"
});

sApp.start(function() { /* success */
alert("OK");
}, function(error) { /* fail */
alert(error);
});
这里是以调用地图应用---百度地图为例

对于url中含有的参数说明:

    originName:起始地名称
    origin[0]:起始纬度
    origin[1]:起始经度
    destinationName:终点名称
    destination[0]:终点纬度
    destination[1]:终点经度

其他地图类应用的包名如下:

       百度地图:com.baidu.BaiduMap
       高德地图:com.autonavi.minimap
       腾讯地图:com.tencent.map
       谷歌地图:com.google.android.apps.maps

常用地图API

    

常用地图的API:

    1.百度地图            http://lbsyun.baidu.com/index.php?title=uri/api/web
                                 调起App的uri:baidumap://map/direction

    2.腾讯地图            https://lbs.qq.com/uri_v1/guide-route.html
                                  调起App的uri:qqmap://map/routeplan

    3.高德地图            https://lbs.amap.com/api/uri-api/guide/travel/route
                                 调起App的uri:amapuri://route/plan/

    4.谷歌地图            地图开发地址不可用
                                 调起App的uri:google.navigation:q= 或者 http://maps.google.com/maps

注意: cordova 运行版本需6.3.0以上。

发散应用:

     可以分别利用两个插件,检测应用包名,或者调起第三方应用,或者一起使用检测某个第三方应用的存在,并传参调起。

 

 

 

参考自:

ionic开发——检测是否安装某APP,如果安装打开该APP
ionic项目中使用cordova插件跳转第三方地图APP(百度、高德)
第一步,安装cordova插件

cordova plugin add https://github.com/lampaa/com.lampa.startapp.git //打开第三方APP
cordova plugin add cordova-plugin-appavailability --save//检测是否存在第三方App
cordova plugin add cordova-plugin-inappbrowser //应用内置浏览器

第二步,配置config.xml(以百度地图为例):

//ios
<allow-intent href="baidumap://*/*" />
//android
<allow-intent href="bdapp://*/*" />
第三步,代码实现

var scheme;
// 不同的平台实现方式是不同的
if (ionic.Platform.isAndroid()) {
//android
scheme = ‘com.baidu.BaiduMap‘;
appAvailability.check(
scheme, // URI Scheme or Package Name
function() { // Success callback
alert(scheme + ‘ is available :)‘);
var sApp = startApp.set({ /* params */
"action":"ACTION_MAIN",
    "category":"CATEGORY_DEFAULT",
    "type":"text/css",
    "package":"com.baidu.BaiduMap",
    "uri":"file://data/index.html",
    "flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
    // "component": ["com.android.GoBallistic","com.android.GoBallistic.Activity"],
    "intentstart":"startActivity",
}, { /* extras */
"EXTRA_STREAM":"extraValue1",
"extraKey2":"extraValue2"
});
sApp.start(function() { /* success */
alert("OK");
}, function(error) { /* fail */
alert(error);
});
},
function() { // Error callback
// 不存在对应APP
alert(scheme + ‘ is not available :(‘);
// 打开百度地图下载地址
window.open("market://search?q=com.baidu.BaiduMap")
}
);
} else {
// ios
scheme = ‘baidu://‘;
appAvailability.check(
scheme, // URI Scheme or Package Name
function() { // Success callback
alert(scheme + ‘ is available :)‘);
var sApp = startApp.set("baidumap://");
sApp.start(function() { /* success */
alert("OK");
}, function(error) { /* fail */
alert(error);
});
},
function() { // Error callback
alert(scheme + ‘ is not available :(‘);
// 打开store下载百度地图 window.open("https://itunes.apple.com/cn/app/id452186370")
}
);
}

对于ios9+需要配置白名单,否则检测无效:

//在项目的Info.plist文件配置
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
</array>

以上是关于cordova调用第三方应用的主要内容,如果未能解决你的问题,请参考以下文章

移动web:原生开发打包,嵌入h5页面 webApp:全部都是H5开发的应用 混合APP:使用第三方开发平台从apicloud,appcan,hbuilder等开发,cordova技术打包 原生APP

如何在 IOS cordva 应用程序中添加 cordova 插件?

如果我使用移动支付网关,Cordova 移动应用程序是不是需要 PCI 合规性?

在 Ionic 2 中使用第三方 cordova 插件和 TypeScript

AppDelegate.m (Cordova 2.3.0) 中不存在 didFinishLaunchingWithOptions 方法

Apache Cordova开发环境搭建-Visual Studio