不知不觉的支付宝已经成为我们生活中不可或缺的一款APP
,由最初的纯支付APP
发展到现在集各种实用的小功能着实不容易,今天在此要给大家说说这改变导致关于我们程序员必须要做的事情,那就是迅速增加分享到支付宝好友的功能。
说到这,其实我也是无意间看到了微博客户端有分享到支付宝好友的功能,好奇来着,就弄着玩玩,像友盟、ShareSDK之类的第三方到目前为止貌似还没有增加这项分享的。
下面我带大家怎么完成这项简单的任务。恩,非常简单,看标题就知道了。。。��
下面我们来说重点:
APOpenAPI.h
APOpenAPIObject.h
libAPOpenSdk.a
#import "APOpenAPI.h"
为Other Linker Flags 添加 -all_load
为URL Types 添加支付宝回调scheme
注意
- identifier必须为
alipayShare
- URL Schemes 命名规则:
ap+AppID
支付宝分享的URL Schemes 命名为:alipayshare
#import "APOpenAPI.h"
在@implementation AppDelegate中增加如下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
// 创建供Demo使用的根视图
APRootViewController *rootViewController = [[APRootViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.window.rootViewController = navigationController;
// 配置应用的AppId
// 重要:必须先在支付宝开放平台申请您的AppId才能正常使用支付宝社交分享功能
// Demo中的AppId,使用xxxxxxxxxx代替
[APOpenAPI registerApp:@"xxxxxxxxxx"];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 处理支付宝通过URL启动App时传递的数据
return [APOpenAPI handleOpenURL:url delegate:self];
}
不同类型的分享数据主要通过APMediaMessage内的mediaObject对象进行区分:
分享纯文本
// 发送文本消息到支付宝
- (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;
// 发送请求
[APOpenAPI sendReq:request];
}
分享纯图片(图片链接形式)
// 发送图片消息到支付宝(图片链接形式)
- (void)sendPhotoByUrl
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 创建图片类型的消息对象
APShareImageObject *imgObj = [[APShareImageObject alloc] init];
imgObj.imageUrl = @"此处填充图片的url链接地址";
// 回填 APMediaMessage 的消息对象
message.mediaObject = imgObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 发送请求
[APOpenAPI sendReq:request];
}
分享纯图片(图片数据形式)
// 发送图片消息到支付宝(图片数据形式)
- (void)sendPhotoByData
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 创建图片类型的消息对象
APShareImageObject *imgObj = [[APShareImageObject alloc] init];
// 此处填充图片data数据,例如 UIImagePNGRepresentation(UIImage对象)
// 此处必须填充有效的image NSData类型数据,否则无法正常分享
imgObj.imageData = nil;
// 回填 APMediaMessage 的消息对象
message.mediaObject = imgObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 发送请求
[APOpenAPI sendReq:request];
}
分享网页(缩略图链接形式)
// 发送网页消息到支付宝(缩略图链接形式)
- (void)sendWebByUrl
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此处填充网页标题";
message.desc = @"此处填充网页简要内容";
message.thumbUrl = @"此处填充缩略图的url链接地址";
// 创建网页类型的消息对象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此处填充网页url链接地址";
// 回填 APMediaMessage 的消息对象
message.mediaObject = webObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 发送请求
[APOpenAPI sendReq:request];
}
分享网页(缩略图数据形式)
// 发送网页消息到支付宝(缩略图链接形式)
- (void)sendWebByData
{
// 创建消息载体 APMediaMessage 对象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此处填充网页标题";
message.desc = @"此处填充网页简要内容";
// 此处填充缩略图data数据,例如 UIImagePNGRepresentation(UIImage对象)
// 此处必须填充有效的image NSData类型数据,否则无法正常分享
message.thumbData = nil;
// 创建网页类型的消息对象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此处填充网页url链接地址";
// 回填 APMediaMessage 的消息对象
message.mediaObject = webObj;
// 创建发送请求对象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息载体对象
request.message = message;
// 发送请求
[APOpenAPI sendReq:request];
}
注意
分享纯图片、网页缩略图时,可以使用两种形式:图片url、图片data。
支付宝内优先
使用图片data形式。
/* * 收到一个来自支付宝的请求,第三方应用程序处理完后调用sendResp向支付宝发送结果 * * 入参 * req : 支付宝向第三方发来的请求类 */
- (void)onReq:(APBaseReq*)req
{}
/* * 第三方应用程序发送一个sendReq后,收到支付宝的响应结果 * * 入参 * resp : 第三方应用收到的支付宝的响应结果类,目前支持的类型包括 APSendMessageToAPResp(分享消息) */
- (void)onResp:(APBaseResp*)resp
{
// Demo内主要是将响应结果通过alert的形式反馈出来,第三方应用可以根据 errCode 进行相应的处理。
NSString *title = nil;
NSString *message = nil;
if (resp.errCode == APSuccess) {
title = @"成功";
} else {
title = @"失败";
message = [NSString stringWithFormat:@"%@(%d)", resp.errStr, resp.errCode];
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[alert show];
}
支付宝钱包从9.0版本开始支持分享,api中提供了接口来判断当前设备是否能够支持分享到支付宝钱包。
/*! @brief 检查支付宝是否已被用户安装 * * @return 支付宝已安装返回YES,未安装返回NO。 */
+(BOOL) isAPAppInstalled;
/*! @brief 判断当前支付宝的版本是否支持OpenApi * * @return 支持返回YES,不支持返回NO。 */
+(BOOL) isAPAppSupportOpenApi;
/*! @brief 获取支付宝的itunes安装地址 * * @return 支付宝的安装地址字符串。 */
+(NSString *) getAPAppInstallUrl;
**至此,你已经能够使用支付宝分享SDK的所有内容了。
具体的处理逻辑请参考Demo内的示例代码。**
Demo下载地址:https://github.com/AllLuckly/-iOS_Demo
技术交流群:511040024
版权归©Bison所有 未经允许不得转载。