外部链接打开APP跳转到目标页面

背景:

应产品需求,外部链接打开微脉,并跳转到相应目标页面。前期我们使用了第三方-魔窗来完成这个功能。但是通过一年的使用发现-魔窗很不稳定,经常出现打不开连接的现象。基于这种原因,我开始研究新的方案,不能让微脉存在那么大的隐患。

构思:

为了不把这种风险交到第三方手中,所以开始思考完全由我们自己实现。

实现方案:

由服务端通过短信方式把连接发送到患者手机上--患者点击链接,打开H5(我们原生自己写)-点击去APP(去下载)--打开App(打开appStore)- 进入app --进行数据连接解析--进行逻辑跳转。

步骤:

一:配置接收端


1、选中工程文件,TARGETS -> Info,找到最下面的URL Types项添加一个Item;

2、将URL Schemes设置为WMAppLink(大小写都可以,推荐小写)。


外部链接打开APP跳转到目标页面_第1张图片
上图最显而易见

二:在主端(H5)添加打开接收端方法

1、添加一个按钮,并实现点击事件;

2、拼接参数到字符串wmapplink://后面;

3、配置链接,实现苹果打开第三方协议。(备注这里和H5端约定连接模式:第一部分是:wmapplink://

第二部分是:keyName=CommentRouter

第三部分是:?flag=toDoctor&id=123456&name=茭白

参数分别用 p1 p2 p3  p4  p5等拓展名

总共的拼接是:wmapplink://keyName=CommentRouter?flag=toDoctor&p1=123456&p2=茭白)

三:在接收端实现接收参数方法

1、打开AppDelegate.m文件;

2、添加系统自带代理方法,接收Url参数。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

3:为了各业务分离以及减少AppDelegate的业务量,故创建一个AppDelegate+Link类别。具体实现方案写在方法

-(void)applicationBusinessProcessWithURL:(NSURL *)url{

/**

* 利用 url.host 可以得到 keyName=CommentRouter

* 利用url 和公共方法可以 获取参数

*/

NSMutableDictionary *dic =[self turnDictionaryparametersWithURL:url];

[self jumpTagetWithFlag:url.host withParamer:dic];

}

利用以下方法把URL中的参数解析为字典

-(NSMutableDictionary *)turnDictionaryparametersWithURL:(NSURL *)url{

NSString *urlstring = [NSString stringWithFormat:@"%@",url];

NSArray *array = [urlstring componentsSeparatedByString:@"?"];

NSString  *paramerStr = [array lastObject];

NSArray *paramerArr = [paramerStr componentsSeparatedByString:@"&"];

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];

for (NSString * string in paramerArr) {

NSArray *paramersArr = [string componentsSeparatedByString:@"="];

[dic setObject:[paramersArr lastObject] forKey:[paramersArr firstObject]];

}

return dic;

}

最后在以下方法处理业务逻辑

-(void)jumpTagetWithFlag:(NSString *)keyName withParamer:(NSMutableDictionary *)paramer{

if ([keyName isEqualToString:@"keyName=CommentRouter"]) {

//判断来的方向的

NSString * flag = [paramer objectForKey:@"flag"];

if ([flag isEqualToString:@"toDoctor"]) {

//去医生详情页面

 }

}

}

你可能感兴趣的:(外部链接打开APP跳转到目标页面)