此文来自支付宝分享接入文档,详情查询支付宝开发者平台

---

### 1.1 iOS客户端DEMO结构

```

APSocialSDKDemo

| APSocialSDKDemo 文件夹 Demo源码文件夹

| Framework 文件夹 存放第三方库

| SocialSDK 文件夹 存放支付宝分享库资源

| APOpenAPI.h 分享接口头文件

| APOpenAPIObject.h 分享数据模型头文件

| libAPOpenSdk.a 分享静态库

| README.md 说明文件

| AppDelegate.h App启动委托头文件

| AppDelegate.m 实现分享注册、响应回调等逻辑

| APRootViewController.h 根视图控制器头文件

| APRootViewController.m 实现分享文本、图片、网页逻辑

| Images.xcassets 图片资源管理工具,系统自带

| SupportingFiles文件夹 项目配置管理,系统自带

| Products 文件夹 编译结果,系统自带

```

---

### 1.2 DEMO文件核心代码

* 接入文件核心代码

* 发送消息核心代码

---

### 1.3 IOS集成

#### 准备工作

* 申请你的AppID。请到支付宝开放平台应用登记页面进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

* 下载并解压接口压缩文件(文件名是SocialSDK.zip)。

#### 步骤1:启动IDE(如Xcode),把SocialSDK文件夹中以下文件拷贝到项目文件夹下,并导入到项目工程中。

```

APOpenAPI.h

APOpenAPIObject.h

libAPOpenSdk.a

```

#### 步骤2:在需要调用SocialSDK的文件中,增加头文件引用。

```

#import "APOpenAPI.h"

```

#### 步骤3:工程配置

* 为Other Linker Flags 添加 `-all_load `

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

>

**注意**

1. identifier必须为 `alipayShare`

2. URL Schemes 命名规则:`ap+AppID`

* iOS 9以后的系统需要添加支付宝分享的scheme到白名单中

>

**支付宝分享的URL Schemes 命名为:`alipayshare`**

按如下形式添加即可:

```

<key>LSApplicationQueriesSchemes</key>

<array>

<string>alipay</string>

<string>alipayshare</string>

</array>

```

#### 步骤4:注册应用并添加必要的URL Handler

如示例AppDelegate.m文件中,增加引用代码:

```

#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];

}

```

#### 步骤5:分享数据到支付宝钱包

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

* 组装APMediaMessage对象

* 调用sendReq发送接口

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

* APShareTextObject 纯文本数据

* APShareImageObject 图片数据

* APShareWebObject 网页数据

分享纯文本

```

//  发送文本消息到支付宝

- (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形式。

#### 步骤6: 响应自支付宝返回的分享处理结果

```

/*

*  收到一个来自支付宝的请求,第三方应用程序处理完后调用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];

}

```

---

### 1.4 判断当前设备是否支持分享

支付宝钱包从9.0版本开始支持分享,api中提供了接口来判断当前设备是否能够支持分享到支付宝钱包。

* [1]判断当前设备是否已经安装支付宝钱包

```

/*! @brief 检查支付宝是否已被用户安装

*

* @return 支付宝已安装返回YES,未安装返回NO。

*/

+(BOOL) isAPAppInstalled;

```

* [2]判断当前设备是否支持分享到支付宝(已经安装支付宝&&支付宝版本支持分享)

```

/*! @brief 判断当前支付宝的版本是否支持OpenApi

*

* @return 支持返回YES,不支持返回NO。

*/

+(BOOL) isAPAppSupportOpenApi;

```

* [3]获取支付宝钱包在AppStore的下载链接,未安装钱包时可使用该链接跳转安装

```

/*! @brief 获取支付宝的itunes安装地址

*

* @return 支付宝的安装地址字符串。

*/

+(NSString *) getAPAppInstallUrl;

```

**至此,你已经能够使用支付宝分享SDK的所有内容了。

具体的处理逻辑请参考Demo内的示例代码。**

iOS 支付宝好友分享相关推荐

  1. Bison教你3分钟集成支付宝好友分享

    支付宝.jpg 不知不觉的支付宝已经成为我们生活中不可或缺的一款APP,由最初的纯支付APP发展到现在集各种实用的小功能着实不容易,今天在此要给大家说说这改变导致关于我们程序员必须要做的事情,那就是迅 ...

  2. ios支付宝sdk分享

    不知不觉的支付宝已经成为我们生活中不可或缺的一款APP,由最初的纯支付APP发展到现在集各种实用的小功能着实不容易,今天在此要给大家说说这改变导致关于我们程序员必须要做的事情,那就是迅速增加分享到支付 ...

  3. iOS QQ空间 好友分享

    iOS QQ空间 好友分享 1.进入腾讯开发者平台,可以查看分享SDK文档,根据说明按步骤接入 demo演示 - (void)viewDidLoad { [super viewDidLoad]; // ...

  4. 关于iOS的社会化分享方案总结

    本文讲的是关于iOS的社会化分享方案总结,一.系统原生 UIActivityViewController 优缺点 优点:使用简单.不用注册繁杂的分享平台账号.不用导入臃肿的SDK包 缺点:UI可定制性 ...

  5. iOS支付宝支付集成

    概述 iOS支付宝支付集成 详细 代码下载:http://www.demodashi.com/demo/10729.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧( ...

  6. ios 支付宝支付 回调数据_iOS逆向支付宝

    去掉 ptrace 和 __RESTRICT section 两个保护 脱壳和dump头文件 分析和调试 编写Tweak 总结 环境 MacBook,iPhoneX,iOS 9.3.3越狱, iOS支 ...

  7. 萤石云好友分享的监控怎么看_助力开学季丨萤石云APP新增群组分享功能、扩容优惠套餐!...

    开学季 萤石云新功能上线 又是一年忙碌充实的开学季,小小少年们又回到了学校,萤石幼儿园校长却多了份幸福的烦恼:宝爸宝妈们都想看自家孩子的上课录像,可每次只能跨过班主任直接向校长申请:小班的同学座位升到 ...

  8. 前端做微信好友分享_一篇搞定微信分享和line分享

    前言 在h5的页面开发中,分享是不可或缺的一部分,对于一些传播性比较强的页面,活动页之类的,分享功能极为重要.例如,京东等电商年末时会有一系列的总结h5在微信中传播,就不得不提到微信的分享机制. 微信 ...

  9. iOS - ShareSDK第三方分享(图文和视频)和登录

    由于近期工作需要自己抽时间搞了一下第三方分享,这里使用的是shareSDK的第三方,在使用的过程中有一些心得和体会,特在此和大家分享一下~ 1.在经过将近一周时间的开发,终于搞定ios分享了. 2.由 ...

最新文章

  1. 生产者,消费者,CDN
  2. python 正则表达式 查找 替换 文本
  3. TPU3.0今日上岗!谷歌AI芯片甩竞争对手好几条街!
  4. 基数排序及其思想 C++代码实现及分析 恋上数据结构笔记
  5. 异常注意事项_finally有return语句
  6. 实现SDI与MDI的转换 (转)
  7. Anaconda 完全入门指南
  8. promise链式调用_这一次,彻底弄懂 Promise
  9. 测试 MathJax 排版功效
  10. csdn 不登录浏览全文 chrome 浏览器
  11. 更新证书错误Code Sign error: Provisioning profile ‘XXXX'can't be found
  12. 20165230 2017-2018-2 《Java程序设计》第8周学习总结
  13. win10如何禁止CDR软件访问网络的设置方法教程
  14. 使用群晖ds218play下载电驴文件
  15. 关于cad生成dwf文件和插入dwf快
  16. 使用谷歌浏览器模拟发送http请求
  17. 如何实现 JS 运行时的 Inspector 能力
  18. 打开软件显示乱码的解决方法
  19. 视觉语言导航综述Visual Language Navigation
  20. 【Vue】Vue全家桶(九)Vue3

热门文章

  1. 使用html制作一个旅游网站
  2. php微信支付需要哪些设置,如何申请和配置微信支付接口?
  3. 最新小漫画Android下载,迷妹漫画安卓app2021最新版
  4. python的cfg是什么模块_python操作cfg配置文件方式
  5. 【如何学习Kotlin 开发?《Kotin 移动和服务器端应用开发》告诉你】
  6. Java输出PPT文件(三) - 饼图数据替换
  7. uni-app动态切换样式
  8. 机器人杆长标定_关于机器人标定,还有这些内幕你必须知道
  9. python获取excel数据制作有文字和图表的报告_如何用Python绘制学术报告图表?
  10. android 2k 屏幕 字体模糊,2k显示器怎么会字体模糊