## H5与原生交互插件
天马框架,本身集成了cordova功能。提供了一些框架插件功能。在使用下列插件之前,需要先引用下面js:
```
<script type="text/javascript" src="http://review.360tianma.com/cordova/exec/cordova.js"></script>
<script type="text/javascript" src="http://review.360tianma.com/cordova/exec/tmcontroller.js"></script>
```
### 1组件消息通信
```
插件说明:不同组件之间进行消息通信
插件名称:TMController
调用方法:sendMessage
入参类型:JSON
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|ClassName|类名|目标控制器的类名|String|是|无|
|message|要发送的消息|由开发者自定义,JSON格式字符串|String|是|无|
>调用实例:
```
function create(){
var title = document.getElementById("title").value;
var content = document.getElementById("content").value;
var messageJson = "{\"title\":\""+title+"\",\"content\":\""+content+"\"}";
TMController.sendMessage(className,messageJson,onSuccess, onError);
//成功返回: {}
function onSuccess(msg){
alert(msg);
}
//失败返回: {"error":"失败信息"}
function onError(error){
alert(error);
}
}
```
---
### 2打开Native新窗口
```
插件说明:A组件需要打开B组件界面 插件名称:TMController
调用方法:openNativeInterface
入参类型:JSON
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|className|类名|需要打开页面的控制器类名|String|是|无|
|arguments|参数|JSON格式字符串|String|否|无|
>调用实例:
```
function openNativeInterface(){
var className = "TMViewController";
var title = document.getElementById("title").value;
var content = document.getElementById("content").value;
var arguments = "{\"title\":\""+title+"\",\"content\":\""+content+"\"}";
TMController.openNativeInterface(className, arguments,onSuccess, onError);
}
```
---
### 3打开Native新窗口加载HTML页面 ###
```
插件说明:组件打开Native新窗口加载HTML页面
插件名称:TMController
调用方法:openHtmlInterface
入参类型:JSON
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|loadUrl|URL|如果是远程H5, 则填写全连接,如果是本地H5,则填写文件名|String|是|无|
|folder|文件路径|如果是本地网页,这填写文件路径|String|否|无|
>调用实例:
```
function openHtmlInterface(){
var loadUrl = "https://www.360tianma.com";
var folder = "";
TMController.openHtmlInterface(loadUrl, folder, onSuccess, onError);
}
```
*****
### 4.检测是否登录
```
插件说明:检测是否登录
插件名称:TMController
调用方法:checkLogin
入参类型:结果回调
```
>调用实例:
```
function checkLogin(){
var onSuccess = function(result) {
alert('是否登录:' + result);
};
TMController.checkLogin(onSuccess);
}
```
---
### 5.获取会员信息 ###
```
插件说明:获取登陆后的会员信息
插件名称:TMController
调用方法:getUser
入参类型:成功或者失败回调
```
>调用实例:
```
function getUserInfo(){
TMController.getUser(onSuccess, onError);
function onSuccess(userInfo) {
alert(userInfo);
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
如果未登录,则返回错误,走onError回调
如果已登录,则以Json格式返回会员信息,例如:
{"member_id":1,"member_nickname":"昵称"}
返回的更多参数,请参考TMHttpUserInstance.h类文件
```
---
### 6.获取基础配置信息 ###
```
插件说明:获取基础配置信息
插件名称:TMController
调用方法:getBaseConfig
入参类型:成功或者失败回调
```
>调用实例:
```
function getBaseConfig(){
TMController.getBaseConfig(onSuccess);
function onSuccess(baseConfig) {
alert(baseConfig);
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
以Json格式返回基础配置信息,例如:
{
"domain":"http://review.360tianma.com",
"siteCode":"00000000000000000000000000000000",
"themeColor":"#d81e06",
"titleColor":"#ffffff",
"backgroundType": 0,
"backgroundValue": "#d81e06"
}
domain域名,
themeColor主题色,
titleColor 导航栏标题颜色,
backgroundType标题栏背景类型(0:16进制色值字符串(如#1479D7),1:图片base64字符串,2:图片网络链接,默认为色值字符串),
backgroundValue标题栏背景颜色值。
```
---
### 7.跳转到登录界面 ###
```
插件说明:跳转到登录界面
插件名称:TMController
调用方法:openLoginInterface
入参类型:成功或失败回调
```
>调用实例:
```
function openLoginInterface(){
TMController.openLoginInterface(onSuccess,onError);
function onSuccess() {
alert("onSuccess");
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
如果登录成功则走成功回调,并返回会员信息
前往登录页面失败或者用户主动取消登录并返回,则走失败回调
```
---
### 8.跳转到会员中心界面 ###
```
插件说明:跳转到会员中心界面
插件名称:TMController
调用方法:openUCMainInterface
入参类型:无参数
```
>调用实例:
```
function openUCMainInterface(){
TMController.openUCMainInterface();
}
```
---
### 9.跳转到绑定手机界面 ###
```
插件说明:跳转到登录界面
插件名称:TMController
调用方法:openBindingMobileInterface
入参类型:成功或者失败回调
```
>调用实例:
```
function openBindingMobileInterface(){
TMController.openBindingMobileInterface(onSuccess,onError);
function onSuccess() {
alert("onSuccess");
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```、
成功跳转到绑定手机号页面则走成功回调
前往绑定手机号页面失败,或手机号已存在,则走失败回调
```
### 10.分享网页 ###
```
插件说明:分享网页到第三方平台
插件名称:TMController
调用方法:shareUrl
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|description|描述|分享内容的描述|String|否|无|
|thumb|缩略图|缩略图的地址|String|否|无|
|title|标题|分享的标题|String|否|无|
|url|链接地址|分享的链接地址|String|否|无|
>调用实例:
```
function shareUrl(){
var des = "描述";
var thumb = "缩略图";
var title = "标题";
var url = "链接";
TMController.shareUrl(onSuccess,onError, des,thumb,title,url);
var onSuccess = function(data) {
//platformType:分享的平台信息,1:QQ,2:微信,3:微博,4:未知
alert('platformType: ' + data.platformType + '\n');
};
function onError(msg) {
alert('error: ' + msg);
}
}
```
### 11.分享图片 ###
```
插件说明:分享图片到第三方平台
插件名称:TMController
调用方法:shareImage
入参类型:String
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|图链接|图片链接|分享的图片|String|否|APP图标|
>调用实例:
```
function shareImage(){
var des = "描述";
TMController.shareImage(onSuccess, onError, des);
var onSuccess = function(data) {
//platformType:分享的平台信息,1:QQ,2:微信,3:微博,4:未知
alert('platformType: ' + data.platformType + '\n');
};
function onError(msg) {
alert('error: ' + msg);
}
}
```
### 12.分享文本 ###
```
插件说明:分享文本到第三方平台
插件名称:TMController
调用方法:shareText
入参类型:String
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|description|描述|分享的文本|String|是|无|
>调用实例:
```
function shareText(){
var des = "描述";
TMController.shareText(onSuccess, onError, des);
function onSuccess(platform) {
alert(platform);
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
成功返回分享的平台
失败返回错误信息
```
### 13.弹出支付对话框 ###
```
插件说明:弹出支付方式选择的对话框
插件名称:TMController
调用方法:showPayDialog
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|cost|支付的金额|显示支付的金额(如3.5)|String|是|无|
>调用实例:
```
function showPayDialog(){
var cost= "12.5";
TMController.showPayDialog(onSuccess, onError, cost);
function onSuccess(type) {
alert(type);
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
成功返回选择的支付类型,请将该数据原样返回给后端签名
失败返回错误信息
```
### 14.前往支付 ###
```
插件说明:前往支付
插件名称:TMController
调用方法:gotoPay
```
>入参:
| 参数名|含义 | 规则说明 | 参数类型 |是否必须 |缺省值 |
|:-------------:|:-------------|:-------------|:-------------|:-------------|:-------------|
|type|支付方式(1:支付宝 2:微信)|支付选择框中选择的支付方式|String|是|无|
|content|签名|后端签名后的数据|String|是|无|
>调用实例:
```
function gotoPay(type, content){
TMController.gotoPay(onSuccess, onError, type,content);
function onSuccess() {
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
成功无返回结果
失败返回错误信息
```
### 15.获取支持的支付平台 ###
```
插件说明:前往支付
插件名称:TMController
调用方法:getPaySupportPlatform
```
>入参:
>调用实例:
```
function getPaySupportPlatform(type, content){
TMController.getPaySupportPlatform(onSuccess, onError);
function onSuccess() {
}
function onError(error) {
alert(error);
}
}
```
>返回结果:
```
成功:返回支持的平台数据,其中 1:支付宝 2:微信
失败返回错误信息
```