社交分享功能是指第三方App通过接入该功能,让用户可以从App分享图片、网页至支付宝。社交分享功能目前支持图片、网页共两种类型。以下是分享内容的代码示例。
不同类型的分享数据主要通过APMediaMessage内的mediaObject对象进行区分:
不同场景的分享区分:
分享到动态在支付宝9.9.5版本前(不包括9.9.5版本)只支持网页链接类型的消息,在9.9.5版本及以后只有纯文本类型的消息不支持。
代码示例:
// 发送文本消息到支付宝
- (void)sendText
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 创建文本类型的消息对象
APShareTextObject *textObj = [[APShareTextObject alloc] init];
textObj.text = @"此处填充发送到支付宝的纯文本信息";
// 回填 APMediaMessage 的消息对象
message.mediaObject = textObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 分享场景,0为分享到好友,1为分享到生活圈;支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。
request.scene = 0;
// 发送请求
BOOL result = [APOpenAPI sendReq:request];
if (!result) {
//失败处理
NSLog(@"发送失败");
}
}
b)发送网页Card
代码示例:
// 发送网页消息到支付宝
- (void)sendWebByUrl
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此处填充网页标题";
message.desc = @"此处填充网页简要内容";
message.thumbUrl = @"此处填充缩略图的url链接地址";
//缩略图也可使用thumbData字段分享本地UIImage类型图片,必须填充有效的image NSData类型数据,否则无法正常分享
//例如 message.thumbData = UIImagePNGRepresentation(Your UIImage Obj);
// 创建网页类型的消息对象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此处填充网页url链接地址";
// 回填 APMediaMessage 的消息对象
message.mediaObject = webObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 分享场景,0为分享到好友,1为分享到生活圈;支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。
request.scene = 1;
// 发送请求
BOOL result = [APOpenAPI sendReq:request];
if (!result) {
//失败处理
NSLog(@"发送失败");
}
}
c)发送图片分享
代码示例:
// 发送图片消息到支付宝
- (void)sendPhotoByUrl
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 创建图片类型的消息对象
APShareImageObject *imgObj = [[APShareImageObject alloc] init];
imgObj.imageUrl = @"此处填充图片的url链接地址";
//图片也可使用imageData字段分享本地UIImage类型图片,必须填充有效的image NSData类型数据,否则无法正常分享
//例如 imgObj.imageData = UIImagePNGRepresentation(Your UIImage Obj);
// 回填 APMediaMessage 的消息对象
message.mediaObject = imgObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 分享场景,0为分享到好友,1为分享到生活圈;支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。
request.scene = 0;
// 发送请求
BOOL result = [APOpenAPI sendReq:request];
if (!result) {
//失败处理
NSLog(@"发送失败");
}
}
a)检查当前手机上是否安装了支付宝
支付宝钱包从9.0版本开始支持分享,api中提供了接口来判断当前设备是否能够支持分享到支付宝钱包。
//@return 支付宝已安装返回YES,未安装返回NO。
+(BOOL) isAPAppInstalled;
b)判断当前设备是否支持分享到支付宝好友(已经安装支付宝&&支付宝版本支持分享到好友)
//@return 支持返回YES,不支持返回NO。
+(BOOL) isAPAppSupportOpenApi;
c)判断当前设备是否支持分享到支付宝生活圈(已经安装支付宝&&支付宝版本支持分享到生活圈)
// @return 支持返回YES,不支持返回NO。
+(BOOL) isAPAppSupportShareTimeLine;
d)获取支付宝钱包在AppStore的下载链接,未安装钱包时可使用该链接跳转安装
// @return 支付宝的安装地址字符串。
+(NSString *) getAPAppInstallUrl;
在参照章节的接受和处理支付宝返回的响应消息实现回调接口之后,在回调方法里面可以处理相关错误码
错误码枚举定义在APErrorCode中:
| 错误码 | 说明 |
|---|---|
| APSuccess | 分享成功 |
| APErrCodeUserCancel | 分享被用户取消 |
| APErrCodeAuthDeny | 分享鉴权失败,需要检查appId、packageId以及签名是否和注册的时候一致 |
| APErrCodeSentFail | 分享过程中出现异常导致分享失败,可能由于网络或其他原因的失败 |
| APErrCodeUnsupport | 支付宝钱包版本不支持 |
| APErrCodeCommon | 分享参数错误 |