APP分享到支付宝的链接如何打开支付宝小程序并带参数
2019-04-18 本文已影响21人
朝阳小麦
本文内容:分享链接能打开指定支付宝小程序。
适用人群:需要打开指定支付宝小程序。
其实这个链接再支付宝小程序的开发文档中有介绍。这里粘一下:
alipay://platformapi/startapp?appId=%@&page=%@&query=%@
备注:%@为OC语法里的变量占位
解说:
- appId:小程序的id
- page:需要打开指定小程序界面的路径
- 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];
这么写确实比较笨,但是确实能解决问题。希望有更好方式的人能留言分享。