友盟分享(微信分享,微博分享,Facebook分享)
最近写了友盟分享,已经完全实现了,从最一开始的申请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 (@"分享成功了");
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库