iOS JDAPP相关跳转协议
iOS JDAPP相关跳转协议
一、js->Native 跳转(JDNewWebViewController)
openapp.jdmobile://communication?params={"action":"syncShareData","title":"手机大抢劫-51电信","content":"","shareUrl":"http://sale.jd.com/app/act/BJQPi7tEwsYrTyk.html","iconUrl":""}
openapp.jdmobile://virtual?params={"category":"jump","des":"productDetail","skuId":"1157957","sourceType":"homefloor","sourceValue":"4384", "landPageId":"jshop.cx.mobile"}
其中openapp.jdmobile://前缀固定,communication?标识不同的host,host主要分为virtual以以communication两种,virtual标识活动落地页与相关跳转分支,communication表示其他分支
params字段对应的value是一个json串,上面举例的经过decode(ios系统实现)后的value{"action":"syncShareData","title":"手机大抢劫-51电信","content":"","shareUrl":"http://sale.jd.com/app/act/BJQPi7tEwsYrTyk.html","iconUrl":""}
1.host为virtual时:
取json串里面的des字段,标识要去的app原生页,des值与跳转原生页的对应关系:
例如:
params={"category":"jump","des":"productDetail","skuId":"1157957","sourceType":"homefloor","sourceValue":"4384", "landPageId":"jshop.cx.mobile"}
Des值 |
跳转原生页 |
|
activity |
跳转到活动 |
(type) 1:ActivitylistVC 2:PromotionWareListVC |
promotion |
跳转到促销卖场的活动列表 |
|
textContainer |
跳转到文本容器 |
|
getCoupon |
跳转到领券页面 |
|
Cart |
跳转到购物车 |
|
m |
跳转到虚拟页面 |
|
productDetail |
跳转到商品详情 |
|
Movie |
跳转到电影票 |
|
cutPrice |
跳转到砍啊砍 |
|
shake |
跳转到摇一摇 |
|
jshopMain |
跳转到店铺页面 |
|
productList |
跳转到列表:分类列表、搜索列表 |
|
DM |
跳转到活动m页面 |
|
jd_native_jimi |
跳转JIMI |
|
jd_native_im |
跳转IM |
|
share |
显示分享弹出框 |
|
wuliuchaxun |
跳转到物流抽奖M页面,最近一月订单 |
|
JvglassMail |
跳转到大图页面 |
|
homeIcons |
交与首页楼层Manger去执行跳转 |
|
HomePage |
跳转到首页 |
|
Discovery |
跳转到发现 |
|
getXB |
跳转至小冰 |
|
seckill |
跳转秒杀 |
|
orderlist |
跳转到全部订单 |
|
ordertrace |
跳转到订单跟踪 |
|
airTicket |
跳转本地机票 |
|
couponCenter |
跳转到领券中心 |
|
goodsRecommend |
精品推荐 |
|
worthBuy |
值得买 |
|
phoneSale |
手机专享 |
|
faxian |
跳转到原生发现楼层 |
|
jshopBrand |
跳转店铺街 |
|
myDNA |
跳转到我的DNA |
|
2. host为communication或者其他时
例如:
openapp.jdmobile://communication?params={"action":"syncShareData","title":"手机大抢劫-51电信","content":"","shareUrl":"http://sale.jd.com/app/act/BJQPi7tEwsYrTyk.html","iconUrl":""}
Des值 |
跳转 |
|
payId |
交与支付组件处理 |
|
action= “share” |
调用分享组件 |
|
action= “syncShareData” |
同步分享数据 |
|
|
|
|
|
|
|
|
|
|
1.取json串里面的payId字段,若不为空,则跳转到支付组件统一处理,
2.取json串里面的TokenKey字段,若不为空,则跳转对应的是第三方登陆,同上
3.取json串里面的action字段,若不为空,根据actionname进行相关处理(例如:share,syncShareData)
总结:
js<=>native 通信手段是目前JDApp里面惯用的一种实现手段,这个过程包括两个过程。(1)js-native, (2)native->js
过程1:主要依靠UIWebView 代理方法webView: shouldStartLoadRequest : navigationType方法,当js页面发生url的location的动作时间,webview会捕捉到这一事件,然后对准url中参数做解析,做相应操作。(目前存在的弊端,appmenuHandle 处理逻辑中,随着页面数量越来越多,if判断逻辑越来越深,可能有性能方面的问题)。
过程2 : 目前过程2 app使用较少,native->js主要依靠[UIWebView stringByEvaluatingJavaScriptFromString:@”js代码”];
二、远程推送跳转协议:
1. ios client接收到远程推送消息后进行相关处理
客户端一共分两个步骤完成这个过程,
-(void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo;
处理userInfo;
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ;
处理launchOptions
调用MessageManager的handleRemoteNotification方法,来控制跳转。
2.MessageManager处理协议
userInfo是一个字典,首先会进行剥离处理
数据合法以后会跟解析参数进行跳转
type |
跳转 |
|
MessageType_Broadcast = 20, MessageType_Custom = 31, |
// 广播消息 // 定制推送消息(促销消息) |
|
MessageType_WareDelivered = 5, MessageType_Discount = 6, MessageType_Appointment = 50, MessageType_FixTimeSend = 52, |
// 到货通知 // 降价通知 //预约提醒 //定期送提醒 |
|
MessageType_Coupon = 11, MessageType_CouponExpire = 13 |
// 优惠券 |
|
MessageType_PayRemind = 8, |
//支付提醒 |
|
MessageType_Logistics = 10, MessageType_CanPickup = 3, MessageType_Electric = 4, MessageType_TailPay = 12, |
// 物流信息 // 用户自提 //大家电派工 //预售付尾款
|
|
MessageType_Consult = 1 |
// 咨询回复 |
|
其他 |
根据msgid处理消息 |
|
- 消接收后是存在一个字典里面,客户端需要针对消息体里面的值进行解析处理,具体的处理全部交付MessageManager类处理
总结推送消息跳转: 1.app杀掉状态,点击消息栏目进入,走didFinishLaunchingWithOptions 处理参数 launchOptions 2. App开启状态,直接在代理里面接收处理消息体。
三、ios客户端openURL跳转协议
iOS客户端通过openURL打开app时间相关跳转协议处理
通过由其他渠道跳转并打开京东app的过程,相关跳转协议的处理
host 为360buy
key |
|
|
PartnerOpenAppType_home = 1, PartnerOpenAppType_detail = 2, PartnerOpenAppType_search = 3, PartnerOpenAppType_activity = 4, //活动页 PartnerOpenAppType_glass = 5 //大图页 |
首页 商详 搜索 活动 大图 |
|
functionName=“loginFromSafari" |
暂无 |
|
functionName=“virtual" |
AppManager处理 |
|
|
|
|
|
|
|
|
|
|
|
|
|
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。