
不知不覺的支付寶已經成為我們生活中不可或缺的一款APP,由最初的純支付APP發(fā)展到現(xiàn)在集各種實用的小功能著實不容易,今天在此要給大家說說這改變導致關于我們程序員必須要做的事情,那就是迅速增加分享到支付寶好友的功能。
說到這,其實我也是無意間看到了微博客戶端有分享到支付寶好友的功能,好奇來著,就弄著玩玩,像友盟、ShareSDK之類的第三方到目前為止貌似還沒有增加這項分享的。
下面我?guī)Т蠹以趺赐瓿蛇@項簡單的任務。恩,非常簡單,看標題就知道了。。。??
下面我們來說重點:
準備工作
- 申請你的AppID。請到支付寶開放平臺應用登記頁面進行登記,登記并選擇移動應用進行設置后,將獲得AppID,可立即用于開發(fā)。但應用登記完成后還需要提交審核,只有審核通過的應用才能正式發(fā)布使用。
- 下載并解壓接口壓縮文件(文件名是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
注意
- identifier必須為
alipayShare - URL Schemes 命名規(guī)則:
ap+AppID
- iOS 9以后的系統(tǒng)需要添加支付寶的分享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];
// 創(chuàng)建供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:分享數據到支付寶錢包
發(fā)送分享請求的過程主要分為兩部分:
- 組裝APMediaMessage對象
- 調用sendReq發(fā)送接口
不同類型的分享數據主要通過APMediaMessage內的mediaObject對象進行區(qū)分:
- APShareTextObject 純文本數據
- APShareImageObject 圖片數據
- APShareWebObject 網頁數據
分享純文本
// 發(fā)送文本消息到支付寶
- (void)sendText
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 創(chuàng)建文本類型的消息對象
APShareTextObject *textObj = [[APShareTextObject alloc] init];
textObj.text = @"此處填充發(fā)送到支付寶的純文本信息";
// 回填 APMediaMessage 的消息對象
message.mediaObject = textObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
分享純圖片(圖片鏈接形式)
// 發(fā)送圖片消息到支付寶(圖片鏈接形式)
- (void)sendPhotoByUrl
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 創(chuàng)建圖片類型的消息對象
APShareImageObject *imgObj = [[APShareImageObject alloc] init];
imgObj.imageUrl = @"此處填充圖片的url鏈接地址";
// 回填 APMediaMessage 的消息對象
message.mediaObject = imgObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
分享純圖片(圖片數據形式)
// 發(fā)送圖片消息到支付寶(圖片數據形式)
- (void)sendPhotoByData
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 創(chuàng)建圖片類型的消息對象
APShareImageObject *imgObj = [[APShareImageObject alloc] init];
// 此處填充圖片data數據,例如 UIImagePNGRepresentation(UIImage對象)
// 此處必須填充有效的image NSData類型數據,否則無法正常分享
imgObj.imageData = nil;
// 回填 APMediaMessage 的消息對象
message.mediaObject = imgObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
分享網頁(縮略圖鏈接形式)
// 發(fā)送網頁消息到支付寶(縮略圖鏈接形式)
- (void)sendWebByUrl
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此處填充網頁標題";
message.desc = @"此處填充網頁簡要內容";
message.thumbUrl = @"此處填充縮略圖的url鏈接地址";
// 創(chuàng)建網頁類型的消息對象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此處填充網頁url鏈接地址";
// 回填 APMediaMessage 的消息對象
message.mediaObject = webObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
分享網頁(縮略圖數據形式)
// 發(fā)送網頁消息到支付寶(縮略圖鏈接形式)
- (void)sendWebByData
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此處填充網頁標題";
message.desc = @"此處填充網頁簡要內容";
// 此處填充縮略圖data數據,例如 UIImagePNGRepresentation(UIImage對象)
// 此處必須填充有效的image NSData類型數據,否則無法正常分享
message.thumbData = nil;
// 創(chuàng)建網頁類型的消息對象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此處填充網頁url鏈接地址";
// 回填 APMediaMessage 的消息對象
message.mediaObject = webObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
注意
分享純圖片、網頁縮略圖時,可以使用兩種形式:圖片url、圖片data。
支付寶內優(yōu)先使用圖片data形式。
步驟6: 響應自支付寶返回的分享處理結果
/*
* 收到一個來自支付寶的請求,第三方應用程序處理完后調用sendResp向支付寶發(fā)送結果
*
* 入參
* req : 支付寶向第三方發(fā)來的請求類
*/
- (void)onReq:(APBaseReq*)req
{}
/*
* 第三方應用程序發(fā)送一個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內的示例代碼。
PS:
最后跟大家說下支付寶里面需要填的Bundle ID 必須和項目中的一樣哦!
否則會出現(xiàn)----鑒權失敗
Demo下載地址:https://github.com/AllLuckly/-iOS_Demo
技術交流群:511040024
好文推薦:iOS9新特性之實現(xiàn)3D Touch就是So easy--OC版
如對你有幫助,請不要吝惜你的star和喜歡哦!
技術交流群:534926022(免費) 511040024(0.8/人付費)
推薦一款學習iOS開發(fā)的app_____|______| | 傳送門
版權歸?Bison所有 未經允許不得轉載。