iOS旅途

APP分享到支付宝的链接如何打开支付宝小程序并带参数

2019-04-18  本文已影响21人  朝阳小麦

本文内容:分享链接能打开指定支付宝小程序。
适用人群:需要打开指定支付宝小程序。

其实这个链接再支付宝小程序的开发文档中有介绍。这里粘一下:
alipay://platformapi/startapp?appId=%@&page=%@&query=%@

备注:%@为OC语法里的变量占位

解说:

  1. appId:小程序的id
  2. page:需要打开指定小程序界面的路径
  3. query:需要传递给小程序的参数

麻烦的地方?如果appId和page参数都很简单,举例如下:
alipay://platformapi/startapp?appId=12312312&page=pages/products/product/product&query=%@

query呢,如果只有一个参数,也是比较简单的,直接跟在query后面即可。但是,如果有多个参数呢?
比如:
id=469&productId=12
这么个参数,如果整体拼接在后面,则链接为:
alipay://platformapi/startapp?appId=12312312&page=pages/products/product/product&query=id=469&productId=12

那么这个链接能打开小程序并调到指定界面,但是,小程序端却无法获取需要的参数。原因是,query后面的参数被编码了。

那怎么写呢?需要保证不对query后续参数编码,即可。

iOS中(OC),我是这么写的:

NSString *params = [NSString stringWithFormat:@"id=%@&managerId=%@", 
self.viewModel.detailModel.id, [FYUserManager sharedManager].currentUser.userId];

// 忽略指定字符被编码
NSString *encodeStr = [params stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"id%@managerId%@",
 self.viewModel.detailModel.id, [FYUserManager sharedManager].currentUser.userId]]]; //编码

NSString *shareUrl = [NSString stringWithFormat:
@"alipay://platformapi/startapp?appId=%@&page=pages/products/product/product&query=%@", 
self.viewModel.shareInfoModel.appId, encodeStr];

这么写确实比较笨,但是确实能解决问题。希望有更好方式的人能留言分享。

上一篇 下一篇

猜你喜欢

热点阅读