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

支付寶.jpg

不知不覺的支付寶已經成為我們生活中不可或缺的一款APP,由最初的純支付APP發(fā)展到現(xiàn)在集各種實用的小功能著實不容易,今天在此要給大家說說這改變導致關于我們程序員必須要做的事情,那就是迅速增加分享到支付寶好友的功能。
說到這,其實我也是無意間看到了微博客戶端有分享到支付寶好友的功能,好奇來著,就弄著玩玩,像友盟、ShareSDK之類的第三方到目前為止貌似還沒有增加這項分享的。
下面我?guī)Т蠹以趺赐瓿蛇@項簡單的任務。恩,非常簡單,看標題就知道了。。。??
下面我們來說重點:


準備工作

  • 申請你的AppID。請到支付寶開放平臺應用登記頁面進行登記,登記并選擇移動應用進行設置后,將獲得AppID,可立即用于開發(fā)。但應用登記完成后還需要提交審核,只有審核通過的應用才能正式發(fā)布使用。
  • 下載并解壓接口壓縮文件(文件名是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

注意

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

更多經驗請點擊
原文在:http://www.allluckly.cn/

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

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

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

版權歸?Bison所有 未經允許不得轉載。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容