不知不覺的支付寶已經(jīng)成為我們生活中不可或缺的一款APP
,由最初的純支付APP
發(fā)展到現(xiàn)在集各種實用的小功能著實不容易拟糕,今天在此要給大家說說這改變導(dǎo)致關(guān)于我們程序員必須要做的事情,那就是迅速增加分享到支付寶好友的功能。
說到這,其實我也是無意間看到了微博客戶端有分享到支付寶好友的功能,好奇來著,就弄著玩玩,像友盟犹菇、ShareSDK之類的第三方到目前為止貌似還沒有增加這項分享的。
下面我?guī)Т蠹以趺赐瓿蛇@項簡單的任務(wù)芽卿。恩揭芍,非常簡單,看標(biāo)題就知道了卸例。沼沈。流酬。??
下面我們來說重點:
準(zhǔn)備工作
- 申請你的AppID。請到支付寶開放平臺應(yīng)用登記頁面進(jìn)行登記列另,登記并選擇移動應(yīng)用進(jìn)行設(shè)置后芽腾,將獲得AppID,可立即用于開發(fā)页衙。但應(yīng)用登記完成后還需要提交審核摊滔,只有審核通過的應(yīng)用才能正式發(fā)布使用。
- 下載并解壓接口壓縮文件(文件名是SocialSDK.zip)店乐。
步驟1:啟動IDE(如Xcode)艰躺,把SocialSDK文件夾中以下文件拷貝到項目文件夾下,并導(dǎo)入到項目工程中眨八。
APOpenAPI.h
APOpenAPIObject.h
libAPOpenSdk.a
步驟2:在需要調(diào)用SocialSDK的文件中腺兴,增加頭文件引用。
#import "APOpenAPI.h"
步驟3:工程配置
為Other Linker Flags 添加
-all_load
為URL Types 添加支付寶回調(diào)scheme
注意
- identifier必須為
alipayShare
- URL Schemes 命名規(guī)則:
ap+AppID
- iOS 9以后的系統(tǒng)需要添加支付寶的分享scheme
支付寶分享的URL Schemes 命名為:alipayshare
步驟4:注冊應(yīng)用并添加必要的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;
// 配置應(yīng)用的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時傳遞的數(shù)據(jù)
return [APOpenAPI handleOpenURL:url delegate:self];
}
步驟5:分享數(shù)據(jù)到支付寶錢包
發(fā)送分享請求的過程主要分為兩部分:
- 組裝APMediaMessage對象
- 調(diào)用sendReq發(fā)送接口
不同類型的分享數(shù)據(jù)主要通過APMediaMessage內(nèi)的mediaObject對象進(jìn)行區(qū)分:
- APShareTextObject 純文本數(shù)據(jù)
- APShareImageObject 圖片數(shù)據(jù)
- APShareWebObject 網(wǎng)頁數(shù)據(jù)
分享純文本
// 發(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];
}
分享純圖片(圖片數(shù)據(jù)形式)
// 發(fā)送圖片消息到支付寶(圖片數(shù)據(jù)形式)
- (void)sendPhotoByData
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
// 創(chuàng)建圖片類型的消息對象
APShareImageObject *imgObj = [[APShareImageObject alloc] init];
// 此處填充圖片data數(shù)據(jù),例如 UIImagePNGRepresentation(UIImage對象)
// 此處必須填充有效的image NSData類型數(shù)據(jù),否則無法正常分享
imgObj.imageData = nil;
// 回填 APMediaMessage 的消息對象
message.mediaObject = imgObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
分享網(wǎng)頁(縮略圖鏈接形式)
// 發(fā)送網(wǎng)頁消息到支付寶(縮略圖鏈接形式)
- (void)sendWebByUrl
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此處填充網(wǎng)頁標(biāo)題";
message.desc = @"此處填充網(wǎng)頁簡要內(nèi)容";
message.thumbUrl = @"此處填充縮略圖的url鏈接地址";
// 創(chuàng)建網(wǎng)頁類型的消息對象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此處填充網(wǎng)頁url鏈接地址";
// 回填 APMediaMessage 的消息對象
message.mediaObject = webObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
分享網(wǎng)頁(縮略圖數(shù)據(jù)形式)
// 發(fā)送網(wǎng)頁消息到支付寶(縮略圖鏈接形式)
- (void)sendWebByData
{
// 創(chuàng)建消息載體 APMediaMessage 對象
APMediaMessage *message = [[APMediaMessage alloc] init];
message.title = @"此處填充網(wǎng)頁標(biāo)題";
message.desc = @"此處填充網(wǎng)頁簡要內(nèi)容";
// 此處填充縮略圖data數(shù)據(jù),例如 UIImagePNGRepresentation(UIImage對象)
// 此處必須填充有效的image NSData類型數(shù)據(jù)段誊,否則無法正常分享
message.thumbData = nil;
// 創(chuàng)建網(wǎng)頁類型的消息對象
APShareWebObject *webObj = [[APShareWebObject alloc] init];
webObj.wepageUrl = @"此處填充網(wǎng)頁url鏈接地址";
// 回填 APMediaMessage 的消息對象
message.mediaObject = webObj;
// 創(chuàng)建發(fā)送請求對象
APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
// 填充消息載體對象
request.message = message;
// 發(fā)送請求
[APOpenAPI sendReq:request];
}
注意
分享純圖片闰蚕、網(wǎng)頁縮略圖時,可以使用兩種形式:圖片url连舍、圖片data没陡。
支付寶內(nèi)優(yōu)先
使用圖片data形式。
步驟6: 響應(yīng)自支付寶返回的分享處理結(jié)果
/*
* 收到一個來自支付寶的請求索赏,第三方應(yīng)用程序處理完后調(diào)用sendResp向支付寶發(fā)送結(jié)果
*
* 入?yún)? * req : 支付寶向第三方發(fā)來的請求類
*/
- (void)onReq:(APBaseReq*)req
{}
/*
* 第三方應(yīng)用程序發(fā)送一個sendReq后盼玄,收到支付寶的響應(yīng)結(jié)果
*
* 入?yún)? * resp : 第三方應(yīng)用收到的支付寶的響應(yīng)結(jié)果類,目前支持的類型包括 APSendMessageToAPResp(分享消息)
*/
- (void)onResp:(APBaseResp*)resp
{
// Demo內(nèi)主要是將響應(yīng)結(jié)果通過alert的形式反饋出來潜腻,第三方應(yīng)用可以根據(jù) errCode 進(jìn)行相應(yīng)的處理埃儿。
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 判斷當(dāng)前設(shè)備是否支持分享
支付寶錢包從9.0版本開始支持分享,api中提供了接口來判斷當(dāng)前設(shè)備是否能夠支持分享到支付寶錢包砾赔。
- [1]判斷當(dāng)前設(shè)備是否已經(jīng)安裝支付寶錢包
/*! @brief 檢查支付寶是否已被用戶安裝
*
* @return 支付寶已安裝返回YES,未安裝返回NO青灼。
*/
+(BOOL) isAPAppInstalled;
- [2]判斷當(dāng)前設(shè)備是否支持分享到支付寶(已經(jīng)安裝支付寶&&支付寶版本支持分享)
/*! @brief 判斷當(dāng)前支付寶的版本是否支持OpenApi
*
* @return 支持返回YES暴心,不支持返回NO。
*/
+(BOOL) isAPAppSupportOpenApi;
- [3]獲取支付寶錢包在AppStore的下載鏈接杂拨,未安裝錢包時可使用該鏈接跳轉(zhuǎn)安裝
/*! @brief 獲取支付寶的itunes安裝地址
*
* @return 支付寶的安裝地址字符串专普。
*/
+(NSString *) getAPAppInstallUrl;
至此,你已經(jīng)能夠使用支付寶分享SDK的所有內(nèi)容了弹沽。
具體的處理邏輯請參考Demo內(nèi)的示例代碼檀夹。
PS:
最后跟大家說下支付寶里面需要填的Bundle ID 必須和項目中的一樣哦筋粗!
否則會出現(xiàn)----鑒權(quán)失敗
Demo下載地址:https://github.com/AllLuckly/-iOS_Demo
技術(shù)交流群:511040024
好文推薦:iOS9新特性之實現(xiàn)3D Touch就是So easy--OC版
如對你有幫助,請不要吝惜你的star和喜歡哦炸渡!
技術(shù)交流群:534926022(免費) 511040024(0.8/人付費)
推薦一款學(xué)習(xí)iOS開發(fā)的app_____|______| | 傳送門
版權(quán)歸?Bison所有 未經(jīng)允許不得轉(zhuǎn)載娜亿。