Bison教你3分钟集成支付宝好友分享
![](http://upload-images.jianshu.io/upload_images/671504-6e20f6460dd705ab.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
不知不觉的支付宝已经成为我们生活中不可或缺的一款APP
,由最初的纯支付APP
发展到现在集各种实用的小功能着实不容易,今天在此要给大家说说这改变导致关于我们程序员必须要做的事情,那就是迅速增加分享到支付宝好友的功能。
说到这,其实我也是无意间看到了微博客户端有分享到支付宝好友的功能,好奇来着,就弄着玩玩,像友盟、ShareSDK之类的第三方到目前为止貌似还没有增加这项分享的。
下面我带大家怎么完成这项简单的任务。恩,非常简单,看标题就知道了。。。?
下面我们来说重点:
准备工作
- 申请你的AppID。请到支付宝开放平台应用登记页面进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。
- 下载并解压接口压缩文件(文件名是SocialSDK.zip)。
步骤1:启动IDE(如Xcode),把SocialSDK文件夹中以下文件拷贝到项目文件夹下,并导入到项目工程中。
![](http://upload-images.jianshu.io/upload_images/671504-f1b1a1d5e9398e69.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
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分钟集成支付宝好友分享相关推荐
- iOS 支付宝好友分享
此文来自支付宝分享接入文档,详情查询支付宝开发者平台 --- ### 1.1 iOS客户端DEMO结构 ``` APSocialSDKDemo | APSocialSDKDemo 文件夹 Demo源码 ...
- 微信语音麦克风静音_微信聊天打字慢?教你一分钟打出200个字,父母老人都需要...
微信已经成为了我们每天必备的工具,男女老少都在使用微信. 对于我们的父母来说,使用微信聊天打字就很慢,甚至不会打字. 今天就来教大家一分钟打出200个字的绝招,父母老人都需要. 一.语音输入功能 1. ...
- 教你三分钟上手阿里云OOS上传操作
教你三分钟上手阿里云OOS上传操作 1.注册登录 如果小伙伴需要进行使用阿里云oss操作,第一步我们得注册/登录阿里云 https://www.aliyun.com/,小编建议大家尽量使用支付宝登录, ...
- Android客户端和Java服务器端集成支付宝
移动端集成支付,似乎是每个App都可能面临的一件事.所有项目都在谈盈利模式,而从C端获取现金流是盈利中最重要的一个途径之一. 当前大家主要采用微信支付和阿里支付集成到自己的移动应用,虽然官方提供一些文 ...
- 集成支付宝,跳转到支付宝后显示的不是支付页面
如题,又是一个让人无语的问题-- 我像以前一样集成支付宝到项目里,一样的步骤,为了以防万一,我都是先集成到空白项目里,再集成进公司项目里.然后,很简单的,空白项目一分钟集成成功,啥事没有.于是我就开始 ...
- SpringBoot从入门到精通教程(二十九)- 微信企业支付集成(五分钟集成)
需求背景 SpringBoot用法:微信企业支付集成(五分钟集成) 问题痛点 通过SpringBoot框架,集成服务端微信企业支付接口,做到下载即用(填写好相关微信支付后台相关Key信息),最快五分钟 ...
- Android端集成支付宝支付
Android端集成支付宝支付 1.申请账号及配置变量 支付宝快速接入链接点击打开链接 支付宝扫码或者账号密码登录 下面是支付宝给出的接入介绍 第一步:创建应用并获取APPID 要在您的应用中接入支付 ...
- Android——教你10分钟手敲 Butter Knife(小刀注解)
教你10分钟手敲 Butter Knife(小刀注解) 在用 AndroidStudio 集成 Butter Knife(小刀注解)的时候感觉像极了J2EE的Spring IOC容器 自己研究了一下, ...
- 教你Java5分钟制作海报、彻底解决APP兼容性问题
教你Java5分钟制作海报.彻底解决APP兼容性问题 一.需求背景 我们经常在多终端应用开发中会遇到这样的需求:用户在浏览商品时觉得不错,希望分享给朋友.此时终端(安卓.苹果.H5等)生成一张精美 ...
最新文章
- android中edittext设置密码格式,Android 自定义EditText(带清理、密码可见、不可见)...
- [python opencv 计算机视觉零基础到实战] 六、图像运算
- 太快了,太变态了:什么会影响Java中的方法调用性能?
- scanf可以输入负数吗_C语言进行数据的多输入多输出
- ZK(1)——分布式系统概念与ZK简介
- android 左移动画_android 动画Animation之TranslateAnimation移动
- 微信公众号开发之获得素材列表
- 【翻译】Computer Vision for Autonomous Vehicles:Problems,Datasets and State-of-Art
- HTML的head,头头头头!!!
- 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
- android 7.0 新功能介绍(Nougat)
- EndNote X9 闪退解决办法(最简版)
- wiondows如何更新pip版本
- Python中squeeze函数用法
- 2021全国大学生数学建模竞赛B题思路
- Android桌面控件Widget解析
- 学习typescript已然迫在眉睫!!!
- 洛古 P1926 小书童——刷题大军
- (CVPR 2019)PointPillars: Fast Encoders for Object Detection From Point Clouds
- 多家企业宣布将终止与B站合作