最近寫了友盟分享,已經完全實現了,從最一開始的申請APPID到最后分享成功,跟大家細致的分享一下,希望對讀者有幫住
一. 分享流程介紹
1.下載友盟分享的SDK並導入
需要注意的是要導入很多頭文件:(具體步驟移步:http://dev.umeng.com/social/ios/quick-integration)
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.Framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
2 設置友盟appkey
-
獲取友盟Appkey。如果你之前已經在友盟注冊了應用,獲得了Appkey,可以繼續使用之前獲得Appkey。
-
在代碼中設置你的友盟Appkey,在
AppDelegate
文件內設置你的AppKey:
3 配置第三方平台APPID及scheme
1. 配置第三方APPID
坑:
a.注冊的時候讓你輸入的信息一定要對應你的APP信息
比如注冊Facebook的時候,你的Bundel ID和應用名字 要統一,不然分享的時候就不會成功;
b.注意,我代碼用的不是友盟自帶的分享彈框樣式是自定義的因為我要做國際化,沒找到友盟的支持方法;
2 配置系統回調
3 配置URL scheme
不多說了,上代碼吧:
//
// AppDelegate.m
// SPUIView
//
// Created by WBapple on 16/1/20.
// Copyright © 2016年 chinasofti. All rights reserved.
//
#import "AppDelegate.h"
//微信分享
#import "WXApi.h"
//友盟分享
#import "UMSocial.h"
#import "UMSocialFacebookHandler.h"
#import "UMSocialSinaSSOHandler.h"
#import "UMSocialWechatHandler.h"
@interface AppDelegate () <WXApiDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/*****************************************分享代碼********************************/
// 1.友盟分享的Key
NSString *UmengAppkey = @"57173b1ce0f55add74AAAAAAAA";
// 2.要分享的URL
NSString *Url = I18N (@"myurl");
// 3.1設置友盟社會化組件appkey
[UMSocialData setAppKey:UmengAppkey];
// 3.2設置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:@"wx1d6AAAAAAAAAA"
appSecret:@"c8e7605d0bd5f02adAAAAAAAAAAAAA"
url:Url];
// 3.3打開新浪微博的SSO開關,設置新浪微博回調地址,這里必須要和你在新浪微博后台設置的回調地址一致
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"165769AAAAA"
secret:@"d09a66e00701f1AAAAAAAAAAAAAAA"
RedirectURL:Url];
// 3.4設置Facebook,AppID和分享url
[UMSocialFacebookHandler setFacebookAppID:@"576212AAAAAAAA" shareFacebookWithURL:Url];
// 4.1支持橫屏
[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
// 4.2對未安裝客戶端平台進行隱藏(蘋果審核需要,如果不加審核不過)
[UMSocialConfig hiddenNotInstallPlatforms:@[
UMShareToWechatSession,
UMShareToWechatTimeline,
UMShareToSina,
UMShareToFacebook
]];
// 4.4分享鏈接
[[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeWeb url:Url];
/*****************************************分享代碼********************************/
}
#pragma mark - 分享的方法
//回調函數
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
BOOL result = [UMSocialSnsService handleOpenURL:url];
if (result == FALSE)
{
//調用其他SDK,例如支付寶SDK等
SVInfo (@"分享回調函數");
}
return result;
}
- (void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根據`responseCode`得到發送結果,如果分享成功
if (response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
SVInfo (@"share to sns name is %@", [[response.data allKeys] objectAtIndex:0]);
}
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
//彈出列表方法presentSnsIconSheetView需要設置delegate為self
- (BOOL)isDirectShareInIconActionSheet
{
return YES;
}
//友盟分享
#import "UMSocial.h"
// 5.0分享
{ [[UMSocialControllerService defaultControllerService] setShareText:MessageText
shareImage:[UIImage imageNamed:image]
socialUIDelegate:self];
//微信好友
[UMSocialData defaultData].extConfig.wechatSessionData.title = MessageTitle;
[UMSocialData defaultData].extConfig.wechatSessionData.shareText = MessageText;
//微信朋友圈
[UMSocialData defaultData].extConfig.wechatTimelineData.title = MessageTitle;
// [UMSocialData defaultData].extConfig.facebookData.title = MessageTitle;
// [UMSocialData defaultData].extConfig.facebookData.url = Url;
// [UMSocialData defaultData].extConfig.facebookData.linkDescription =
// I18N (@"Click download application");
[UMSocialData defaultData].extConfig.facebookData.shareText =
[[NSString alloc] initWithFormat:@"%@%@", MessageTitle, Url];
//微博
[UMSocialData defaultData].extConfig.sinaData.shareText = MessageTitle;
}
//分享成功調用此方法
- (void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
if (response.responseCode == UMSResponseCodeSuccess)
{
//把分享完成提示框放在底部
[UMSocialConfig setFinishToastIsHidden:NO position:UMSocialiToastPositionBottom];
SVInfo (@"分享成功了");
}
}