Bison教你3分鐘集成支付寶好友分享

支付寶.jpg

不知不覺的支付寶已經(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)入到項目工程中眨八。

A1ACFBC0-964D-4E7B-85E0-8DA6AE7AC4C0.png
APOpenAPI.h
APOpenAPIObject.h
libAPOpenSdk.a

步驟2:在需要調(diào)用SocialSDK的文件中腺兴,增加頭文件引用。

#import "APOpenAPI.h"

步驟3:工程配置

  • 為Other Linker Flags 添加 -all_load

  • 為URL Types 添加支付寶回調(diào)scheme

注意

  1. identifier必須為 alipayShare
  2. 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版

更多經(jīng)驗請點擊
原文在:http://www.allluckly.cn/

如對你有幫助,請不要吝惜你的star和喜歡哦炸渡!

技術(shù)交流群:534926022(免費) 511040024(0.8/人付費)

推薦一款學(xué)習(xí)iOS開發(fā)的app_____|______| | 傳送門

版權(quán)歸?Bison所有 未經(jīng)允許不得轉(zhuǎn)載娜亿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蚌堵,隨后出現(xiàn)的幾起案子买决,更是在濱河造成了極大的恐慌,老刑警劉巖吼畏,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件督赤,死亡現(xiàn)場離奇詭異,居然都是意外死亡泻蚊,警方通過查閱死者的電腦和手機躲舌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來性雄,“玉大人没卸,你說我怎么就攤上這事∫阒” “怎么了办悟?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滩褥。 經(jīng)常有香客問我病蛉,道長,這世上最難降的妖魔是什么瑰煎? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任铺然,我火速辦了婚禮,結(jié)果婚禮上酒甸,老公的妹妹穿的比我還像新娘魄健。我一直安慰自己,他們只是感情好插勤,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布沽瘦。 她就那樣靜靜地躺著,像睡著了一般农尖。 火紅的嫁衣襯著肌膚如雪析恋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天盛卡,我揣著相機與錄音助隧,去河邊找鬼滑沧。 笑死并村,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棚潦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姐叁,長吁一口氣:“原來是場噩夢啊……” “哼瓦盛!你這毒婦竟也來了外潜?” 一聲冷哼從身側(cè)響起原环,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤处窥,失蹤者是張志新(化名)和其女友劉穎嘱吗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滔驾,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年绕德,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耻蛇。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胞此,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漱牵,到底是詐尸還是另有隱情,我是刑警寧澤刁赦,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布闻镶,位于F島的核電站,受9級特大地震影響宦焦,放射性物質(zhì)發(fā)生泄漏顿涣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一精堕、第九天 我趴在偏房一處隱蔽的房頂上張望蒲障。 院中可真熱鬧,春花似錦揉阎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至毅否,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徘溢,已是汗流浹背仰迁。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留施蜜,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓雌隅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親修械。 傳聞我的和親對象是個殘疾皇子检盼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容