文档中心 > 开放平台

分享到支付宝iOS接入指南

更新时间:2017/03/17 访问次数:25412

注:
本文为iOS终端开发工具的新手使用教程,涉及到支付宝“iOS分享SDK包”的使用方法,默认读者已经熟悉应用开发IDE的基本使用方法(本文以XCode为例),以及具有一定的编程知识基础。支付宝社交分享开放接口免费并默认向开发者开放,所以无需进行签约申请。


第一步:创建应用

要在您的应用中使用支付宝开放产品的接口能力,您需要先去蚂蚁金服开放平台(open.alipay.com),在开发者中心中创建登记您的应用,并提交审核,审核通过后会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。

第二步:下载SDK包和DEMO

点击下载 支付宝“iOS分享SDK包” 和 “iOS分享DEMO

“iOS分享SDK包”包含以下内容:

- Headers (文件夹中包含接入所需的头文件)

- 按开发者按调试发布场景需要,所划分的包含SDK(.a后缀)的文件夹:

  • 模拟器(只支持模拟器、不支持真机的SDK,文件较小,可作调试用)
  • 真机(只支持真机、不支持模拟器的SDK,文件较小,推荐发布使用)
  • 真机&模拟器(支持模拟器和真机的SDK,文件较大,可作调试和发布用)
  • 带bitcode后缀的文件夹(支持bitcode技术的SDK版本,使用bitcode的App开发者们可以使用bitcode版本)

“iOS分享DEMO”提供了完整的工程配置及接入代码,您只需将其中的AppId替换为您申请的即可体验分享功能并供开发参考。

 

第三步:搭建开发环境

1. 在XCode中创建您的iOS应用工程。

2. 在工程中添加SDK文件和需要的头文件。其中.h头文件在Headers子文件夹下,.a文件在您所需环境的对应文件夹下(模拟器、真机、bitcode等)

3. 配置工程参数

  • 为Other Linker Flags 添加 -all_load 参数设置

  • 为URL Types 添加支付宝回调scheme

注意:
  1. identifier必须为 alipayShare;
  2. URL Schemes 命名规则:'ap'+APPID,APPID在上面第二步中有说明如何获取;
  3. iOS 9以后的系统需要添加支付宝分享的scheme到白名单中,scheme名为alipayshare。

第四步:使用开发工具包

1. 注册应用并添加必要的URL Handler

在调用社交SDK使用社交分享功能前,先要在应用合适的地方调用注册应用方法,保证请求会被开放平台接收。并同时添加必要的URL,本文将在启动委托类(AppDelegate.m)中添加,如下。

引入SDK头文件:

#import "APOpenAPI.h"

在实现定义中添加如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // self.window = ... 应用初始化代码
    
    // 注册应用会使用到应用的APPID
    // 请参考前文获取APPID
    if(![APOpenAPI registerApp:@"2016XXXXXXXXXX61"]) {
        /*注册失败处理*/
    }    
    return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    //  处理支付宝通过URL启动App时传递的数据
    return [APOpenAPI handleOpenURL:url delegate:self];
}

 

2. 发送请求调用支付宝社交分享能力

发送分享请求的过程主要分为两部分:

  • 组装APMediaMessage对象
  • 调用sendReq发送接口

不同类型的分享数据主要通过APMediaMessage内的mediaObject对象进行区分:

  • APShareTextObject - 纯文本数据
  • APShareImageObject - 图片数据
  • APShareWebObject - 网页数据

不同场景的分享区分:

  • 在支付宝9.9.5版本前(不包括9.9.5版本),不同场景的分享通过APMediaMessage内的scene进行区分。scene为0表示分享到好友,scene为1表示分享到动态;
  • 支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。

分享到动态在支付宝9.9.5版本前(不包括9.9.5版本)只支持网页链接类型的消息,在9.9.5版本及以后只有纯文本类型的消息不支持。

试一试:

下面将通过一个简单的发送文本类分享信息给好友作为例子演示如何发送请求调用支付宝社交分享能力。

a)在应用中添加如下方法,并关联到应用控件的触发事件:

- (void)sendShareMessage
{
    //  创建消息载体 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) {
        //失败处理....
    }
}

b)完成后,同步到iOS设备上尝试一下吧(注意:手机上需要安装好支付宝钱包)。

3. 接受和处理支付宝返回的响应消息

当你的应用成功将分享请求消息发送给支付宝钱包后,用户将在钱包中完成分享操作,在用户完成操作后,支付宝将会把用户操作的结果消息返回给您的应用。你可以通过以下方法获取到消息:

//收到一个来自支付宝的请求,第三方应用程序处理完后调用sendResp向支付宝发送结果
//入参
//req : 支付宝向第三方发来的请求类 - (void)onReq:(APBaseReq*)req {} //第三方应用程序发送一个sendReq后,收到支付宝的响应结果 //入参 //resp : 第三方应用收到的支付宝的响应结果类,目前支持的类型为 APSendMessageToAPResp(分享消息) - (void)onResp:(APBaseResp*)resp { NSString *title = nil; NSString *message = nil;
//errCode请参考功能开发说明中响应返回码说明章节 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]; }

完成后,到手机上尝试一下吧(注意:手机上需要安装好支付宝钱包)。

FAQ

关于此文档暂时还没有FAQ
返回
顶部