框架默认自带了个人中心组件,功能包括登录认证、APP相关设置等功能,会员注册登录以及修改会员等一系列操作后会
将会员信息存储于TMSDK中,通过TMSharedPUtil类可以获取到。
**注意:会员指通过手机APP端注册的使用者**
##### 一、获取基础配置信息
```
TMSharedPUtil.getTMBaseConfig(Context context),返回TMBaseConfig实体对象,TMBaseConfig中包含了域名、站点
Code等数据。
```
##### 二、获取会员信息
```
TMSharedPUtil.getTMUser(Context context),返回TMUser实体对象。
```
##### 三、清除会员登录信息
```
TMSharedPUtil.clearTMUser(Context context),
```
##### 四、获取TOKEN
```
TMSharedPUtil.getTMToken(Context context),返回String对象。
```
##### 五、获取设置的字体大小
```
TMSharedPUtil.getTMFontSize(Context context) 返回int。
```
##### 六、获取是否接收推送
```
TMSharedPUtil.getTMPush(Context context) 返回boolean。
```
##### 七、获取主题色
```
TMSharedPUtil.getTMThemeColor(Context context) 返回String对象,包含#。
```
##### 八、获取头部主题图片
```
TMSharedPUtil.getTMTitleBarColor(Context context) 返回Bitmap对象,可能为空。
```
##### 九、隐藏标题栏
```
入口Fragment调用,自带标题栏需要隐藏框架中标题栏时调用
if (getActivity() instanceof TitleChange) {
((TitleChange) getActivity()).hideTitle();
}
```
##### 十、隐藏/显示底部tab
```
入口Fragment调用,需要隐藏首页底部的Tab时调用(主要用于原生Fragment中使用webview显示跳转下级页面)
if (getActivity() instanceof TablayoutChange) {
((TablayoutChange) getActivity()).hideTablayout();
((TablayoutChange) getActivity()).showTablayout();
}
```
##### 十一、获取是否WiFi下才能加载图片
```
TMSharedPUtil.getTMOnlyWiFiLoad(Context context) 返回boolean。
```
##### 十二、获取是否列表视频自动播放
```
TMSharedPUtil.getTMListVideoAutoPlay(Context context) 返回boolean。
```
##### 十三、登录状态改变监听
```
注册监听
TMLoginManager.registerLoginChangeListener(OnLoginListener listener)
取消监听
TMLoginManager.unregisterLoginChangeListener(OnLoginListener listener)
```
##### 十四、获取定位接口
```
TMLocationUtils.getLocation(Context context)
返回为TMLocationInfo对象,具体变量含义可通过源码查看。
注意:此接口为耗时操作,请在子线程中完成。
```
##### 十五、跳转到登录界面
```
框架默认提供会员登录、注册、会员中心等界面,开发者无需开发上述功能。
Intent intent = new Intent(getPackageName() + ".usercenter.login");
startActivity(intent);
原生开发者可通过上述方式跳转到登录界面,后续操作由框架自主完成,开发者无需关心。登录成功后可通过
TMSharedPUtil.getTMUser(Context context)获取登录后的会员信息。
前端开发者可通过插件调用,详见前端API。若前端开发者的HTML页面是使用开发者自身的WebView进行加载则需要原生开
发者提供方法供HTML调用。
例如:
@JavascriptInterface
public void goToLogin() {
String action = this.getPackageName() + ".usercenter.login";
Intent intent = new Intent(action);
this.startActivity(intent);
}
```
##### 十六、跳转到会员中心
```
~~~
TMFunctionUtil.goToUserCenter(this.cordova.getActivity());
~~~
```
##### 十七、统一发送短信验证码接口
~~~
TMFunctionUtil.sendMessage(context, mobile, new TMFunctionUtil.MsgCallBack() {
@Override
public void onSuccess() {
//发送成功
}
@Override
public void onCancel() {
}
@Override
public void onError(String msg) {
//发送失败
}
});
~~~
如果配置了图形校验码,会先检验图形校验码;否则会直接发送短信验证码
##### 十八、跳转到绑定手机页面
```
注意:请确保会员此时已经登录
Intent intent = new Intent(getPackageName() + ".usercenter.bindingMobile");
startActivity(intent);
原生开发者可通过上述方式跳转到绑定手机页面。
前端开发者可通过插件调用,详见前端API。若前端开发者的HTML页面是使用开发者自身的WebView进行加载则需要原生开
发者提供方法供HTML调用。
例如:
@JavascriptInterface
public void goToBindingMobile() {
String action = this.getPackageName() + ".usercenter.bindingMobile";
Intent intent = new Intent(action);
this.startActivity(intent);
}
```
##### 十九、会员收藏和浏览历史api
```
说明:会员添加收藏和浏览新闻后,会在个人中心看到收藏列表和浏览历史列表,会员点击列表会进入相应的详情,
详情页面由组件实现,个人中心只负责跳转过去。
会员添加收藏接口直接调用天马工厂后端接口。
接口地址:https://www.kancloud.cn/tianma360/admin/650564(添加收藏),
https://www.kancloud.cn/tianma360/admin/744097(添加历史记录)。
个别字段解释:
1. 向后端传输的 "extend" 字段是一个json字符串,格式为:
{
"iosInfo": {
"native": true,
"src": "HViewController",
"paramStr": "",
"wwwFolder": ""
},
"androidInfo": {
"native": false,
"src": "index.html",
"paramStr": "21e364890c730daff9e413660e04d924",
"wwwFolder": "comp01/page/"
}
}
"extend"字段解释:
iosInfo:ios配置对象,该对象中属性所表示含义请查阅ios文档。
androidInfo:安卓配置对象。
androidInfo》》native:是否是原生,true原生,false h5。
androidInfo》》src:跳转以展示的页面,若是h5页面,直接给出链接,(如果是远程h5,请写带协议头的完整路径,如果
是本地h5,请给出html5文件名)。若是原生界面,给出activity完整路径。
androidInfo》》paramStr:传递的参数,当native字段为true时,通过列表打开详情页面传递的参数,当native字段为false
时,此值直接写空字符。
androidInfo》》wwwFolder:文件夹,当native字段为false并且h5是本地h5,这是本地h5文件夹路径。当native字段为
false并且h5是远程h5,文件夹直接写空字符。。当native字段为true,文件夹直接写空字符。
详情页面接收参数方式:
Intent intent = getIntent();
String paramStr = intent.getStringExtra("paramStr");
2. 向后端传输的 "tag" 字段暂时没用到,直接传空字符
```
##### 二十、支付接口
```
弹出支付方式选择框:
TMPayUtil.showPayDialog(Context mContext, float cost, PayTypeSelect payTypeSelect);
请在主线程中调用,其中context为当前Activity,cost为支付金额,payTypeSelect为回调接口。
支付选择回调接口如下,当payType返回-1时,表示取消,返回其他结果时,请将payType返回给后端签名。
interface PayTypeSelect {
void selectPayType(int payType);
}
前往支付功能:
TMPayUtil.gotoPay(Context context, int type, Object data, PayResult payResult);
请在主线程调用,其中context为当前Activity,type为之前选择的payType,data为后端签名数据,PayResult为回调接口。
非原生开发请查看H5开发API(多窗口控制)。
```
##### 二十一、入口Fragment返回键监听
```
若入口Fragment需要监听系统的返回键,需要入口Fragment实现BackPressListener接口(具体路径为
com.tenma.ventures.tools.change_activity.BackPressListener)
interface BackPressListener {
boolean onBackPress();
}
onBackPress() 当入口Fragment消耗了返回事件时,返回true,未消耗返回false。
具体在Activity中的接口调用:
@Override
public void onBackPressed() {
if (currentFragment instanceof BackPressListener) {
if (((BackPressListener) currentFragment).onBackPress()) {
return;
}
}
super.onBackPressed();
}
```
#### 二十二、统一上传接口
根据项目后台配置的上传方式来选择客户端对应的上传方式并上传
~~~
new TMUploadUnify().upload(PersonalDataActivity.this, imagePath, fileName, new TMUploadUnify.OnListener() {
@Override
public void onProgress(Long currentSize, Long totalSize) {
}
@Override
public void onSuccess(String url) { //url为返回成功的地址
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(PersonalDataActivity.this, "上传成功", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onFailure(Exception e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(PersonalDataActivity.this, "上传失败", Toast.LENGTH_SHORT).show();
}
});
}
});
~~~
#### 二十三、跳转二维码扫描
使用如下代码,跳转到扫描二维码Activity
~~~
Intent intent = new Intent(getActivity(), CaptureActivity.class);
getActivity().startActivity(intent);
~~~
如果扫描结果时H5地址会在新窗口打开网页;否则会在新窗口中显示文本。