这是本文档旧的修订版!
在iOS、Android应用中打开的webview,可以通过JS函数和协议进行通讯。
以iOS为例,可以在网页加载完成后,通过访问网页中的JS函数app_bridge_thumb()获取到函数return返回的缩略图url地址:
\-(void)webViewDidFinishLoad:(UIWebView *)webView { NSString *pic_thumb_url = [_webView stringByEvaluatingJavaScriptFromString:@"app_bridge_thumb()"]; }
注意:_webView 改成你自己的名称。
app_bridge_thumb()
app_bridge_submit_rp_shopping_cart()
返回JSON数据示例:
{"opt":"cart","url":"https://m.repai.com/item/cart_islogin/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2="}
说明:opt的值为cart时,表示此商品无型号选择或已经在详情页展开过型号选择,可以直接进入购物车。url表示购物车的网址。Webview打开购物车网址之前,APP需要先通过 APP客户端用户登陆状态判断及用户详情接口 查询当前的rp_access_token是否有效,如果失效请先登录,登录完成后,将 &access_token=xxxxx 作为参数追加在原网址参数后,在webview打开拼接后的网址,例如:
https://m.repai.com/item/cart_islogin/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2=&access_token=xxxxxxxxxxxxxxxx
或
{"opt":"type","url":"http://m.repai.com/item/sku/id/1100041405765641/"}
说明:opt的值为type时,表示从下方弹出一个半高度尺寸的webview,url表示在这个webview中打开的型号/数量选择页面。此页面无需传递rp_access_token
app_bridge_type_rp_shopping_cart()
返回文本数据示例:
https://m.repai.com/item/cart_islogin/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2=
说明:直接返回需要进入的购物车网址。Webview打开购物车网址之前,APP需要先通过 APP客户端用户登陆状态判断及用户详情接口 查询当前的rp_access_token是否有效,如果失效请先登录,登录完成后,将 &access_token=xxxxx 作为参数追加在原网址参数后,在webview打开拼接后的网址,例如:
https://m.repai.com/item/cart_islogin/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2=&access_token=xxxxxxxxxxxxxxxx
app_bridge_item_info()
返回JSON数据示例:
{ "rp_iid": "1100949812302780", "rp_item_url": "http://m.repai.com/item/view/id/1100949812302780/", "rp_pic_url": "http://img04.taobaocdn.com/imgextra/i4/2056453475/TB2Mwl8aXXXXXavXpXXXXXXXXXX_!!2056453475.jpg_320x320q90.jpg", "rp_price": "14.5", "rp_quantity": "50", "rp_title": "拍下14.5牛皮女款皮带细腰带镶水钻" }
app_bridge_shopping_cart_add()
返回JSON数据示例:
{"opt":"cartapi","url":"https://m.repai.com/item/cart_add_api/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2="}
说明:opt的值为cartapi时,表示此商品无型号选择或已经在详情页展开过型号选择,可以直接添加到购物车。url表示添加商品到购物车的接口。调用接口之前,APP需要先通过 APP客户端用户登陆状态判断及用户详情接口 查询当前的rp_access_token是否有效,如果失效请先登录,登录完成后,将 &access_token=xxxxx 作为参数追加在原网址参数后,作为接口调用地址,例如:
https://m.repai.com/item/cart_add_api/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2=&access_token=xxxxxxxxxxxxxxxx
或
{"opt":"type","url":"http://m.repai.com/item/sku/id/1100041405765641/"}
说明:opt的值为type时,表示从下方弹出一个半高度尺寸的webview,url表示在这个webview中打开的型号/数量选择页面。此页面无需传递rp_access_token
app_bridge_add_rp_shopping_cart()
返回文本数据示例:
https://m.repai.com/item/cart_add_api/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2=
说明:添加购物车调用的接口网址。调用接口之前,APP需要先通过 APP客户端用户登陆状态判断及用户详情接口 查询当前的rp_access_token是否有效,如果失效请先登录,登录完成后,将 &access_token=xxxxx 作为参数追加在原网址参数后,后台请求拼接后的网址,例如:
https://m.repai.com/item/cart_add_api/?rp_iid=1100041405765641&rp_quantity=1&rp_sku1=%E9%BB%91%E8%89%B2&rp_sku2=&access_token=xxxxxxxxxxxxxxxx
调用接口后返回以下信息:
成功时:
{"status":true,"reason":"成功添加宝贝到购物车!"}
失败时:
{"status":false,"reason":"请先登录!"}
app_bridge_shopping_cart_open()
返回文本数据示例:
https://m.repai.com/item/cart_islogin/
说明:直接返回需要进入的购物车网址。Webview打开购物车网址之前,APP需要先通过 APP客户端用户登陆状态判断及用户详情接口 查询当前的rp_access_token是否有效,如果失效请先登录,登录完成后,将 ?access_token=xxxxx 作为参数追加在原网址参数后,在webview打开拼接后的网址,例如:
https://m.repai.com/item/cart_islogin/?access_token=xxxxxxxxxxxxxxxx
app_bridge_back_button()
返回文本数据示例:
http://m.repai.com/item/cart/
如果内容为空,则默认后退到上一页。
app_bridge_pay_submit()
返回网址示例:
支付宝普通H5网页 或 微信支付协议(repai://weixin_pay/orderid/订单号)
如果内容为空,则默认后退到上一页。
在 iOS 中,webview中的网页,如果准备访问另外的网址,可以通过协议与APP通讯,示例如下:
\- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType: (UIWebViewNavigationType)navigationType { if(navigationType == UIWebViewNavigationTypeLinkClicked || navigationType == UIWebViewNavigationTypeOther) { NSURL *URL = [request URL]; NSString* rurl=[[request URL] absoluteString]; //NSLog (@"url is :%@", URL); if ([rurl rangeOfString:@"target=present"].location != NSNotFound) {
当网页视图被指示载入内容而得到通知。应当返回YES,这样会进行加载。通过导航类型参数可以得到请求发起的原因,可以是以下任意值:
在热拍APP的webview中,需要做以下判断:
repai://app_bridge_closewebview