[关闭]
@qiaobaBoss 2016-09-13T07:50:49.000000Z 字数 6581 阅读 393

心专医患者版iOS文档-ZSY


概述

本文档主要介绍苹果手机版心专医患者端的部分模块功能和相关工具接口以及使用方法。
文档目前仅主要涉及 Created by 张双义Created by 夜雨 的类别。

AppManager

网络请求

网络请求的管理类 XZYAFManager 是一个单例类,创建方式如下:

  1. XZYAFManager *manager = [XZYAFManager sharedManager];

目前提供的网络请求接口有三种均为post类型方式,方法参数说明可见具体代码 .h 页面的方法说明。

网络请求接口:

  1. //用于请求data类型数据
  2. - (void)POSTData:(NSString *)URLString
  3. parameters:(id)parameters
  4. success:(AFSuccessBlock)success
  5. failure:(AFFailureBlock)failure;
  6. //最常用普通post请求方法
  7. - (void)POSTReorganize:(NSString *)URLString
  8. parameters:(id)parameters
  9. success:(void (^)(id responseObject))success
  10. failure:(void (^)())failure;
  11. //用于上传data数据
  12. - (void)POSTReorganize:(NSString *)URLString
  13. parameters:(id)parameters
  14. constructingBodyWithBlock:(AFMultipartBlock)block
  15. success:(void (^)(id responseObject))success
  16. failure:(void (^)())failure;

三种请求方式内部均自动处理了 session过期 的问题,并打印了初步的错误信息,开发者可自行选择。其中,除 POSTData:url parameters:param success:block1 failure:block2 方法,其他两个请求方式如果返回数据解析失败,默认自动使用 POSTData: 方法重新请求。

注: 调试接口时 POSTReorganize: 也有可能会接收到data类型的返回结果,请切换 POSTData: 方法或与后台协商解决。

网络请求事例:

  1. XZYAFManager *manager = [XZYAFManager sharedManager];
  2. [manager POSTReorganize parameters:param success:^(NSURLSessionDataTask *task, id responseObject) {
  3. for (NSDictionary *dict in responseObject) {
  4. ForumModularModel *model = [ForumModularModel creatFromDictionary:dict];
  5. [_modularArray addObject:model];
  6. }
  7. [self makePageViewController];
  8. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  9. ShowMessage(@"数据加载失败,请检查网络后重新尝试");
  10. NSLog(@"数据加载失败,error:%@",error);
  11. }];

用户管理

用户管理类 XZYUserManager 是一个单例类,用于管理用户的登录信息和登录状态

  1. //主动登陆:帐号、密码、回调block
  2. - (void)loginUser:(NSString *)userAccount passWord:(NSString *)passWord compont:(UserLoginCompont)compont;

  1. - (void)autoLoginCompont:(UserLoginCompont)compont;

其中 compont 登录为回调 typedef void(^UserLoginCompont)(NSString *infoMsg, XZYUser *user);

  1. XZYUser *user = [XZYUserManager sharedManager].currentUser;
  1. /**
  2. * 更新用户信息 同步刷新所有关联控件
  3. */
  4. - (void)updateUserWithInfo:(NSDictionary *)userInfo;
  5. /**
  6. * 保存本地用户信息 只刷新数据
  7. */
  8. - (void)saveLocalUserInfo:(NSDictionary *)userInfo;

前者刷新本地用户数据,并会同步通知所有监测用户信息变化的代理以便刷新见面元素。

  1. - (void)addDelegate:(id<XZYUserManagerDelegate>)delegate;
  2. - (void)removeDelegate:(id<XZYUserManagerDelegate>)delegate;

注:addDelegate 将会强引用代理对象,注意在合适的时机调用 removeDelegate 方法。


- 注销用户
注销登录后用户将不再接收服务器的推送信息,并会删除本地保留的用户信息,下次登录需要手动输入用户帐户密码。

键盘事件

键盘管理类 XZYKeboardManager 为单例类,键盘监测需要遵守 XZYKeboardManagerDelegate 协议,并通过 XZYKeboardManager 的管理方法维护自身状态。

  1. - (void)addDelegate:(id<XZYKeboardManagerDelegate>)delegate;
  2. - (void)removeDelegate:(id<XZYKeboardManagerDelegate>)delegate;

注:addDelegate 将会强引用代理对象,注意在合适的时机调用 removeDelegate 方法。

XZYKeboardManagerDelegate 协议
协议提供了4个方法,但目前验证最安全方法为:

//键盘状态变化(包括弹出和收起)
- (void)keboardStateChange:(CGRect)keyboardBounds duration:(NSNumber *)duration isShow:(BOOL)isShow;

其中 keyboardBounds 为键盘的frame,duration 表示键盘变化的时间,isShow 来判断“弹出”|“收起”

缓冲缓存管理

缓存管理 XZYCatchManager 同样是一个单例类,用于管理一些需要进行异步缓冲和本地缓存的数据信息

用户登陆

个人信息(我)

个人信息为 模块,提供个人相关的各项功能:

  1. 完善个人信息。
  2. 查看家庭成员、关联医生。
  3. 查看、编辑个人健康档案。
  4. 显示个人账单。
  5. 修改登录密码、手机(帐户)。

完善信息

功能:
个人信息编辑页面用来修改个人的身份信息。

家庭成员

家庭成员模块用于展示、管理患者的家庭成员,主界面为 MyFamilyVC

相关界面 功能介绍
MyFamilyEditVC 家庭成员新增、编辑
FamilyHealthEditVC 家庭成员健康信息展示
PatientHealthBaseVC 病人健康信息展示(与患者通用)

我的医生

查看关联医生信息,与关联医生交流,主界面:MyDoctorViewController

相关界面 功能介绍
MyDoctorViewController 基础页面,展示关联医生列表
NIMMyDoctorChatVC 基于网易云信的医患交流页面
MyDoctorDetailVC 通用的医生详情页面,展示医生详情
MyDoctorAdviceVC 我的医生临床指导列表页
DoctorTeamInfoViewController 医生团队详情

健康档案

个人健康查看、编辑,主界面:PatientHealthBaseVC

相关界面 功能介绍
PatientHealthBaseVC 基础页面,展示患者健康记录
PatientHealthDetailListVC 患者指定类型的健康信息列表
PatientHealthInfoEditVC 健康信息新增、编辑页面

PatientHealthBaseVC 是患者端通用的健康档案界面, 上层界面需要选择 infoSourceType 和 传人 patientfamilyMember 中的一个来改变呈现的界面内容。
对应参数类型见 PatientHealthBaseVC.h

我的账单

页面 MyBillViewController 用与显示用户的交易记录,目前仅显示了线上交易的内容。

个人设置

相关界面 功能介绍
MySetViewController 基础页面跳转功能界面,注销用户
MeChangePasswordVC 修改用户登录密码
MeChangePhoneVC 修改用户的关联手机
MyQrcodeViewController 显示用户二维码,跳转扫描页面
QrcodeReadVC 二维码扫描界面,扫描关联医生

会员信息

提供会员信息介绍,可开通会员和续费会员 ,页面 VIPViewController
入口:[] 界面 - 头部信息栏 -[开通会员](已开通则显示为对应会员等级)。

关于心专医

显示版本信息、公司信息,log等,页面 AboutXinZY

健康社区

健康社区是一个供患者之间交流的论坛,患者可在此发帖、回帖,浏览、点赞。

基础页面:ForumBasViewController

ForumBasViewController 主要包含一个 XZYPageViewController, 提供一个带 titleBar 的viewcontroller容器。所有社区帖子按分类被包含在 pageViewController 中,每个分类对应一个 ForumPostListViewControllerForumPostListViewController 之间可左右滑动切换。

列表页面:ForumPostListViewController

ForumPostListViewController 是通用的展示帖子页面,包含属性:

相关属性 类别 作用
forumModular ForumModularModel 加载帖子的所属栏目
modularType ForumModularType 加载帖子的所属类型
parentVC UIViewController 父Controller,用于界面切换

管理中心

页面: ForumManagerViewController
结构 与 ForumBasViewController 类似,
用来查看患者的 发帖回帖 记录。

发帖

发帖界面:QAddPostVC

发帖需要选择发帖栏目,所以上层界面需确保栏目类型已加载成功。
发帖可添加图片,图片类型的帖子需要在后台审核,
尚未通过审核的帖子可在[管理中心]-[我的发帖]中可见
文字帖子,和通过审核的帖子在[健康社区]对应栏目下可见

其他操作

回帖需要点击要恢复的帖子,进入 QPostDetailVC 详情页面
点击详情界面下方输入框可对帖子进行回复留言,点击回复记录可回复该回帖
回帖只能回复文字内容

周边医院

周边医院提供当前地理位置周边的医院信息,点击医院可拨打咨询电话或查看地图导航。
地图借助了 百度地图SDK ,封装工具类为 BaiDuMapTools
BaiDuMapTools 是一个工具类,提供公共的类方法.

地图配置

  1. /**
  2. * 返回弹出的泡泡view ---- annotation/tagIndex ---- nil
  3. */
  4. + (UIView *)getAttPaopao:(id< BMKAnnotation>)annotation target:(id)target action:(SEL)action;
  1. - (void)addAnnotations:(NSArray *)annotations;

向地图窗口添加一组标注,需要实现 BMKMapViewDelegate-mapView:viewForAnnotation: 函数来生成标注对应的View

  1. /**
  2. *根据anntation生成对应的View
  3. *@param mapView 地图View
  4. *@param annotation 指定的标注
  5. *@return 生成的标注View
  6. */
  7. - (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id <BMKAnnotation>)annotation;
  1. //标注点的图片
  2. - (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id <BMKAnnotation>)annotation{
  3. ..
  4. ...
  5. annotationView.image = [UIImage imageNamed:@"icon_mark"];
  6. return annotationView;
  7. }

导航

点击搜索出的附近医院标注将弹出医院信息,点击[路线]按钮可跳转至导航页面 RouteSearchVC ,如下:

  1. //查询路线
  2. - (void)searchLine:(UIButton *)button
  3. {
  4. //给泡泡设置了tage = _hospArray.count
  5. BMKPointAnnotation* item = _hospArray[button.superview.tag-1];
  6. RouteSearchVC *routVC = [[RouteSearchVC alloc] init];
  7. routVC.startNode = [[BMKPlanNode alloc] init];
  8. routVC.startNode.pt = _userLocation.location.coordinate;
  9. routVC.endNode = [[BMKPlanNode alloc] init];
  10. routVC.endNode.pt = item.coordinate;
  11. routVC.userLocation = _userLocation;
  12. routVC.hospAnnotion = item;
  13. [self.navigationController pushViewController:routVC animated:YES];
  14. }

注: 导航方式有三种,默认选择汽车。当两天距离过于接近时,无法提供公交导航。

其他

session过期

App 中需要在所有的网络请求头中添加 isEocd 字段,并设值为1

[sessionManager.requestSerializer setValue:@"1" forHTTPHeaderField:@"isEocd"];

部分需要验证session的网络接口,后台会自动验证当前请求的session信息是否过期如果过期会在返回的错误信息里附带错误码,对比错误码:

if (ERROR_OUTSESSION == stateCode){}


任何疑问可联系邮箱: 273019468@qq.com

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注