ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
框架默认自带了个人中心组件,功能包括登录认证、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地址会在新窗口打开网页;否则会在新窗口中显示文本。