支付宝.jpg

不知不觉的支付宝已经成为我们生活中不可或缺的一款APP,由最初的纯支付APP发展到现在集各种实用的小功能着实不容易,今天在此要给大家说说这改变导致关于我们程序员必须要做的事情,那就是迅速增加分享到支付宝好友的功能。
说到这,其实我也是无意间看到了微博客户端有分享到支付宝好友的功能,好奇来着,就弄着玩玩,像友盟、ShareSDK之类的第三方到目前为止貌似还没有增加这项分享的。
下面我带大家怎么完成这项简单的任务。恩,非常简单,看标题就知道了。。。?
下面我们来说重点:


准备工作

  • 申请你的AppID。请到支付宝开放平台应用登记页面进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。
  • 下载并解压接口压缩文件(文件名是SocialSDK.zip)。

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

A1ACFBC0-964D-4E7B-85E0-8DA6AE7AC4C0.png

APOpenAPI.h
APOpenAPIObject.h libAPOpenSdk.a

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

#import "APOpenAPI.h"

步骤3:工程配置

  • 为Other Linker Flags 添加 -all_load

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

    注意

  • identifier必须为 alipayShare
  • URL Schemes 命名规则:ap+AppID
  • iOS 9以后的系统需要添加支付宝的分享scheme

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

步骤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内的示例代码。

Demo下载地址:https://github.com/AllLuckly/-iOS_Demo
技术交流群:511040024
版权归©Bison所有 未经允许不得转载。

转载于:https://www.cnblogs.com/allluckly/articles/4900778.html

Bison教你3分钟集成支付宝好友分享相关推荐

  1. iOS 支付宝好友分享

    此文来自支付宝分享接入文档,详情查询支付宝开发者平台 --- ### 1.1 iOS客户端DEMO结构 ``` APSocialSDKDemo | APSocialSDKDemo 文件夹 Demo源码 ...

  2. 微信语音麦克风静音_微信聊天打字慢?教你一分钟打出200个字,父母老人都需要...

    微信已经成为了我们每天必备的工具,男女老少都在使用微信. 对于我们的父母来说,使用微信聊天打字就很慢,甚至不会打字. 今天就来教大家一分钟打出200个字的绝招,父母老人都需要. 一.语音输入功能 1. ...

  3. 教你三分钟上手阿里云OOS上传操作

    教你三分钟上手阿里云OOS上传操作 1.注册登录 如果小伙伴需要进行使用阿里云oss操作,第一步我们得注册/登录阿里云 https://www.aliyun.com/,小编建议大家尽量使用支付宝登录, ...

  4. Android客户端和Java服务器端集成支付宝

    移动端集成支付,似乎是每个App都可能面临的一件事.所有项目都在谈盈利模式,而从C端获取现金流是盈利中最重要的一个途径之一. 当前大家主要采用微信支付和阿里支付集成到自己的移动应用,虽然官方提供一些文 ...

  5. 集成支付宝,跳转到支付宝后显示的不是支付页面

    如题,又是一个让人无语的问题-- 我像以前一样集成支付宝到项目里,一样的步骤,为了以防万一,我都是先集成到空白项目里,再集成进公司项目里.然后,很简单的,空白项目一分钟集成成功,啥事没有.于是我就开始 ...

  6. SpringBoot从入门到精通教程(二十九)- 微信企业支付集成(五分钟集成)

    需求背景 SpringBoot用法:微信企业支付集成(五分钟集成) 问题痛点 通过SpringBoot框架,集成服务端微信企业支付接口,做到下载即用(填写好相关微信支付后台相关Key信息),最快五分钟 ...

  7. Android端集成支付宝支付

    Android端集成支付宝支付 1.申请账号及配置变量 支付宝快速接入链接点击打开链接 支付宝扫码或者账号密码登录 下面是支付宝给出的接入介绍 第一步:创建应用并获取APPID 要在您的应用中接入支付 ...

  8. Android——教你10分钟手敲 Butter Knife(小刀注解)

    教你10分钟手敲 Butter Knife(小刀注解) 在用 AndroidStudio 集成 Butter Knife(小刀注解)的时候感觉像极了J2EE的Spring IOC容器 自己研究了一下, ...

  9. 教你Java5分钟制作海报、彻底解决APP兼容性问题

    教你Java5分钟制作海报.彻底解决APP兼容性问题 一.需求背景 ​ 我们经常在多终端应用开发中会遇到这样的需求:用户在浏览商品时觉得不错,希望分享给朋友.此时终端(安卓.苹果.H5等)生成一张精美 ...

最新文章

  1. android中edittext设置密码格式,Android 自定义EditText(带清理、密码可见、不可见)...
  2. [python opencv 计算机视觉零基础到实战] 六、图像运算
  3. 太快了,太变态了:什么会影响Java中的方法调用性能?
  4. scanf可以输入负数吗_C语言进行数据的多输入多输出
  5. ZK(1)——分布式系统概念与ZK简介
  6. android 左移动画_android 动画Animation之TranslateAnimation移动
  7. 微信公众号开发之获得素材列表
  8. 【翻译】Computer Vision for Autonomous Vehicles:Problems,Datasets and State-of-Art
  9. HTML的head,头头头头!!!
  10. 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
  11. android 7.0 新功能介绍(Nougat)
  12. EndNote X9 闪退解决办法(最简版)
  13. wiondows如何更新pip版本
  14. Python中squeeze函数用法
  15. 2021全国大学生数学建模竞赛B题思路
  16. Android桌面控件Widget解析
  17. 学习typescript已然迫在眉睫!!!
  18. 洛古 P1926 小书童——刷题大军
  19. (CVPR 2019)PointPillars: Fast Encoders for Object Detection From Point Clouds
  20. 多家企业宣布将终止与B站合作

热门文章

  1. java 使用注解判断实体类属性值长度
  2. WIN10精简和优化策略
  3. 威纶通学习有感(1)创建工程
  4. live with用法
  5. MAC使用终端cd定位到指定目录
  6. Ubuntu18.04禁用nouveau驱动,安装NVIDIA显卡驱动。
  7. IntelliJ IDEA 破解教程
  8. java版商城之Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
  9. 关于百度编辑器编辑模板
  10. Android实现手部检测和手势识别(可实时运行,含Android源码)