Latest 1.0.0
Homepage https://github.com/WYWM/WMH5SDK-iOS
License MIT
Platforms ios 8.0, requires ARC
Frameworks AdSupport, CoreTelephony, Security, CoreLocation, SystemConfiguration
Authors

文漫H5 iOS SDK使用说明

概述

网易文漫H5 iOS SDK可以帮助合作方iOS客户端快速接入网易文漫提供的功能丰富的H5应用,具体提供如下支持:

  1. 提供了一个自定义的ViewController,可以直接或作为子ViewController展示
  2. ViewController有默认的返回按钮关闭按钮进度条,可以实现快速自定义视图
  3. 通过简单的接口就可以实现H5唤起APP登录流程并通知H5获取账号信息功能
  4. 内部处理了支付宝和微信支付的流程,可以实现H5调用Native APP支付,并在支付完成后跳回原APP;还可以自己通过代理处理其他支付方式
  5. 支持添加客户端跟H5之间的自定义接口调用和回调,以支持合作方某些自定义的扩展需求
  6. 用半天时间实现快速接入

导入

依赖的环境

  • iOS 8+
  • AdSupport.framework – 启用 Apple ADID 支持
  • CoreTelephony.framework – 获取运营商
  • Security.framework – 加密支持
  • CoreLocation.framework – 获取定位信息的支持
  • SystemConfiguration.framework – 获取联网方式(wifi, cellular)
  • libsqlite3.dylib – sqlite 支持
  • libz.dylib – gzip 压缩支持

Pod

pod 'WMH5SDK', '~> 1.0.0'

SDK需要接入方提供的参数

  • loadUrl – 接入H5的入口地址(如阅读地址h5sdk.yuedu.163.com
  • appChannel – 合作方唯一标识
  • sdkAuth – 登录的Token
  • callBackURLScheme – 支付完成返回APP的Scheme

交互流程

我们的H5页面访问需要登录授权的资源时,需要appChannelsdkAuth两个参数。appChannel在初始化SDK时需要指定,sdkAuth可以初始化时指定、未登录时需要实现获取sdkAuth代理方法。具体流程如下:

  • 用户已登录
    已登录时序图

  • 用户未登录
    未登录时序图

接口说明

初始化

  • 初始化控制器
/**
 @param url H5入口
 @param appChannel 合作方唯一标识
 @param adkAuth 登录Token 可以不指定
 @param scheme 当前App URL Scheme
 */
WMH5ViewController *h5Controller = [WMH5ViewController h5ControllerWithUrl:url appChannel:appChannel sdkAuth:sdkAuth callBackURLScheme:scheme];
  • 设置代理
h5Controller.delegate = self;
  • 展示页面
[self.navigationController pushViewController:h5Controller animated:YES];
  • 代理需要实现获取SDKAuth退出sdk页面的方法
/**
 获取sdkAuth

 @param h5Controller 控制器实例
 @param appChannel 合作方唯一标识
 @param completeHandler 获取完成回调
 */
- (void)h5Controller:(WMH5ViewController *)h5Controller fetchSDKAuthForAppChannel:(NSString *)appChannel completeHandler:(void (^)(NSString * _Nonnull))completeHandler {
  //实现获取sdkAuth逻辑
  ///先调用APP登录逻辑
  ///然后向服务器索取sdkAuth
  ///服务器返回之后,通知sdk获取sdkAuth
  completeHandler(sdkAuth);
}

/**
 退出H5页面

 @param h5Controller H5控制器实例
 */
- (void)quitH5Controller:(WMH5ViewController *)h5Controller {
  //退出h5Controller
  [self.navigationController popViewControllerAnimated:YES];
}

自定义行为

  • NativeH5交互
/**
 Native注册JS调用的方法

 @param handlerName Native方法名
 @param handler Native方法体
 */
[h5Controller registerHandler:@"methodNameForJS" handler:^(id  _Nonnull data, WMH5ResponseCallback  _Nonnull responseCallback) {
  //data JS传递的参数
  //responseCallback,回调JS
}];

/**
 调用JS方法

 @param handlerName JS方法名
 @param data 参数
 @param responseCallback Native回调
 */
[h5Controller callHandler:@"JSMethodName" data:forJSData responseCallback:^(id  _Nullable responseData) {
  //JS调用之后的处理逻辑
}];
  • 改变WebView行为
[h5Controller setWebViewDelegate:webViewDelegeta];
  • 关于进度条
/*显示-隐藏*/
h5Controller.pregressViewHidden = NO;
/*进度条颜色*/
h5Controller.progressViewColor = [UIColor yellowColor];
  • 关于Navigation
    可以自定义返回按钮(backItem)、关闭按钮(closeItem),并提供了返回(goBack)、关闭(closeH5)方法。
  • 关于界面
    可以自定义界面位置大小,将sdk提供的ViewController作为子控制器布局,必须将isCustomUI先置YES。
/*必须要设置*/
h5Controller.isCustomUI = YES;

支付相关

配置Info.Plist

  • 增加微信与支付宝的Scheme
    1. Info.Plist中找到LSApplicationQueriesSchemes
    2. 增加weixin
    3. 增加alipay
      Info.Plist

支付完成,回跳APP的Scheme

  • Scheme需要经过微信后台注册验证,Scheme生成过程
    1. H5应用服务提供方需要在微信支付后台为应用注册域名,如阅读测试服务提供的域名是th5sdk.yuedu.163.com
    2. 由该域名生成子域名,如demoa.th5sdk.yuedu.163.com
    3. 接入方需要在自己的APP中以上面的子域名注册URL Scheme
    4. 设置SDK的callBackURLScheme为上面注册的Scheme
      Alt text

自定义支付行为

  • 可以劫持需要加载的URL,自定义支付行为
    1. 设置WebView的代理
    2. 实现webView:shouldStartLoadWithRequest:navigationType:方法
    3. 劫持支付请求的URL,实现自己的逻辑

体量

  • 集成WMH5SDk后,app会增加0.6M

Latest podspec

{
    "name": "WMH5SDK",
    "version": "1.0.0",
    "summary": "Wenman H5 Native SDK",
    "description": "A SDK for fast access to Wenman H5 application, The default navigation bar and progress bar are provided, Provide scheme for payment completion return APP.",
    "homepage": "https://github.com/WYWM/WMH5SDK-iOS",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "fangxiaomin": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source": {
        "git": "https://github.com/WYWM/WMH5SDK-iOS.git",
        "tag": "1.0.0"
    },
    "source_files": "libWMH5SDK/include/**/*.{h,m}",
    "resources": "libWMH5SDK/resource/*",
    "frameworks": [
        "AdSupport",
        "CoreTelephony",
        "Security",
        "CoreLocation",
        "SystemConfiguration"
    ],
    "libraries": [
        "sqlite3",
        "z"
    ],
    "vendored_libraries": "libWMH5SDK/*.a",
    "requires_arc": true
}

Pin It on Pinterest

Share This