android友盟分享图标是英文,GitHub - GDMiao/UmengEnclosed: 友盟分享二次封装,现有文字分享、图片分享、网页分享等多种分享功能。...

本文介绍了如何使用友盟分享(Umeng-Share)6.9.0版本,对文字、图片和网页分享功能进行封装,提供自定义分享面板和预设平台的方法。通过Cocoapods集成、配置SSO白名单和URL Scheme,简化了与其他第三方平台的区别和集成过程。

对友盟分享(Umeng-Share)的功能封装

引言

本文档针对友盟分享(6.9.0)进行了功能封装,完成的对于 文字、图片、网页 分享功能封装,如有其它封装要求请根据本文档的封装思路和友盟分享 api再进行功能封装。

😝话不多言,看看代码吧。

封装主要完成几部

Cocoapods 集成友盟分享 SDK

配置SSO白名单

配置URL Scheme

AppDelegate+UMeng

UmengEnclosed

94f97710ccf95ba2665955cd11b4f168.png

Cocoapods 集成、白名单、URL Scheme

这部分太啰嗦,也没有必要,需要的直接去官方文档查阅 U-Share集成文档

AppDelegate+UMeng

这里是对 AppDelegate 做了一个 Category 分类处理,在 AppDelegate 中好区别去其他第三方平台 SDK 注册和配置来调用U-Share SDK 的调用。

这部分就不多说了,大家都懂,直接上代码。

AppDelegate+UMeng.h

#import "AppDelegate.h"

@interface AppDelegate (UMeng)

// 友盟系统配置和注册

- (BOOL)umengapplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

// 设置系统回调

// 支持所有iOS系统

- (BOOL)umengapplication:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

// 仅支持iOS9以上系统,iOS8及以下系统不会回调

- (BOOL)umengapplication:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options;

// 2.支持目前所有iOS系统

- (BOOL)umengapplication:(UIApplication *)application handleOpenURL:(NSURL *)url;

@end

AppDelegate+UMeng.m

此部分代码过多只展示部分逻辑,有需要请到 GDMiao/UmengEnclosed 下载查看。

a. // 友盟系统配置和注册

// 友盟系统配置和注册

- (BOOL)umengapplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

// UMConfigure 通用设置,请参考SDKs集成做统一初始化。

[UMConfigure initWithAppkey:@"你的UMAPPKey" channel:@"App Store"];

[UMConfigure setLogEnabled:YES];

// U-Share 平台设置

[self configUSharePlatforms]; // 配置参考官方文档

[self confitUShareSettings]; // 配置参考官方文档

return YES;

}

b. 系统回调

// 1.支持所有iOS系统

- (BOOL)umengapplication:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

//6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];

if (!result) {

// 其他如支付等SDK的回调

}

return result;

}

// 2.仅支持iOS9以上系统,iOS8及以下系统不会回调

- (BOOL)umengapplication:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options

{

//6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url options:options];

if (!result) {

// 其他如支付等SDK的回调

}

return result;

}

// 3.支持目前所有iOS系统

- (BOOL)umengapplication:(UIApplication *)application handleOpenURL:(NSURL *)url

{

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];

if (!result) {

// 其他如支付等SDK的回调

}

return result;

}

UmengEnclosed

这部分是对友盟分享的关键封装,定制了 文本字、图片、网页 三种分享,分钟分享有固定的参数形式。

UmengEnclosed.h

#pragma mark -- 定制Text类型分享面板预定义平台

/**

文本分享

@param vc 分享方法调用的 Controller

@param socialType 分享平台选择

@param sharetype 分享类型选择

@param data 分享类型固定参数 data = @"text"

*/

- (void)customTextShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype textData:(id)data;

#pragma mark -- 定制Image类型分享面板预定义平台

/**

图片分享

@param vc 分享方法调用的 Controller

@param socialType 分享平台选择

@param sharetype 分享类型选择

@param data 分享类型固定参数 {"thumb":"thumbImgurl","original":@"originalImgurl"}

*/

- (void)customImageShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype imgUrlData:(id)data;

#pragma mark -- 定制Web类型分享面板预定义平台

/**

网页分享

@param vc 分享方法调用的 Controller

@param socialType 分享平台选择

@param sharetype 分享类型选择

@param data 分享类型固定参数 {"title":"","descr":"","weburl":@""}

*/

- (void)customWebShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype webData:(id)data;

UmengEnclosed.m

a. 此部分根据 SocialType 定制分享面板,根据ShareType定制分享方法,data 根骨分享方法配置参数。

#pragma mark -- 定制自己的分享面板预定义平台

/**

配置分享面板 和 分享类型

@param vc 分享方法调用的 Controller

@param socialType 分享平台选择

@param sharetype 分享类型选择

@param data 分享类型参数

*/

- (void)shareMenuViewWithVC:(id)vc SocialType:(SocialType)socialType ShareType:(ShareType)sharetype date:(id)data

{

_vc = vc;

if (socialType == SType_sina_wx_qq) {

[UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_WechatSession),@(UMSocialPlatformType_WechatTimeLine),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_Qzone)]];

} else {

//[UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_WechatSession)]];

}

__weak typeof(self) weakself = self;

[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {

// 根据获取的platformType确定所选平台进行下一步操作

__strong typeof(self) strongself = weakself;

switch (sharetype) {

case ShareText:

[strongself shareTextToPlatformType:platformType date:data]; // 根据友盟文档定制方法

break;

case SharePictures:

[strongself shareImageToPlatformType:platformType date:data];

break;

case SharePicturesAndText_sina:

break;

case ShareWebPages:

[strongself shareWebPageToPlatformType:platformType date:data];

break;

case ShareMusic:

break;

case ShareVideo:

break;

case ShareWeChatExpression:

break;

case ShareWeChatPrograms:

break;

default:

break;

}

}];

}

b. 分享文本

// 分享文本

- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType date:(id)data

{

NSString *text = data;

//创建分享消息对象

UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

//设置文本

messageObject.text = text;

//调用分享接口

[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self.vc completion:^(id data, NSError *error) {

if (error) {

NSLog(@"************Share fail with error %@*********",error);

}else{

NSLog(@"response data is %@",data);

}

}];

}

c.调用文本分享定制方法

/**

文本分享

@param vc 分享方法调用的 Controller

@param socialType 分享平台选择

@param sharetype 分享类型选择

@param data 分享类型固定参数 data = @"text"

*/

- (void)customTextShareWithVC:(id)vc SocialType:(SocialType)socialType shareType:(ShareType)sharetype textData:(id)data

{

[self shareMenuViewWithVC:vc SocialType:socialType ShareType:sharetype date:data];

}

具体调用

#import "UmengEnclosed.h"

- (IBAction)umengSharedAciton:(id)sender {

UmengEnclosed *umeng = [UmengEnclosed sharedUmengEnclosed];

[umeng customTextShareWithVC:self SocialType:SType_sina_wx_qq shareType:ShareText textData:@"OK"];

}

结语

本次封装只定制我我方 APP 的对应分享的部分功能,如有需要请更加文档自行定制。

如果您能读到点这里我非常感谢。

作者LiuYulei001,代码LYLShareManager。 简单封装友盟第三方平台分享功能; 首先下载友盟分享功能的SDK,并注册相关AppKey及第三方平台的AppKey; 然后按照友盟官网配置下工程,之后再使用此类; // 首先:配置第三方平台URL Scheme ->1->2->3->4 /** 1.打开日志 @param isOpen YES代表打开,No代表关闭 */ +(void)openLog:(BOOL)isOpen; /** 2.设置友盟AppKey @param UmSocialAppkey 友盟AppKey */ +(void)setUmSocialAppkey:(NSString *)UmSocialAppkey; /** 3.设置平台的appkey @param platform 平台类型 @see UMSocialPlatformType @param appKey 第三方平台的appKey(QQ平台为appID) @param appSecret 第三方平台的appSecret(QQ平台为appKey) @param redirectURL redirectURL */ +(BOOL)setPlatform:(UMSocialPlatformType)platform appKey:(NSString *)appKey appSecret:(NSString *)appSecret redirectURL:(NSString *)redirectURL; /** 4.获得从sso或者web端回调到本app的回调 << - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation >> @param URL 第三方sdk的打开本app的回调的url @return 是否处理 YES代表处理成功,NO代表不处理 */ +(BOOL)handleOpenURL:(NSURL *)URL; // 分享功能(适用自定义分享UI页面) /** 图文分享 @param platformType 平台类型 @see UMSocialPlatformType @param ContentText 文本(纯图可以为nil) @param thumbnail 缩略图 @param shareImage 分享图片 */ +(void)shareGraphicToPlatformType:(UMSocialPlatformType)platformType ContentText:(NSString *)ContentText thumbnail:(id)thumbnail shareImage:(id)shareImage success:(success)success failure:(failure)failure; /** 多媒体分享 @param platformType 平台类型 @see UMSocialPlatformType @param ShareContentType 分享多媒体类型 @see ShareContentType @param title 标题 @param contentDescription 分享描述 @param thumbnail 缩略图 @param url 内容网页地址 @param StreamUrl 数据流地址 */ +(void)shareMultimediaToPlatformType:(UMSocialPlatformType)platformType ShareContentType:(ShareContentType)ShareContentType title:(NSString *)title contentDescription:(NSString *)contentDescription thumbnail:(id)thumbnail url:(NSString *)url StreamUrl:(NSString *)StreamUrl success:(success)success failure:(failure)failure;
「LLM那些事」系列第 4 篇《上下文窗口的边界》,文章连接:https://blog.csdn.net/houwenjin/article/details/163999753。 演示什么:在「预测」Sheet 的黄色格子里输入一句话(默认「来泡一杯」),四个「模型」——分别只统计最后 1 / 2 / 3 / 4 个字的 n-gram 查表——同时预测下一个字。同一个输入,看的上下文越长,候选越少、预测越确定: ┌────────────────┬──────────┬───────────────┬──────┐ │ 只看最后几个字 │ 用的前缀 │ 候选下一字数 │ 预测 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 1 个 │ 杯 │ 3(茶/子/水) │ 模糊 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 2 个 │ 一杯 │ 2(茶/水) │ 收窄 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 3 个 │ 泡一杯 │ 1(茶) │ 确定 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 4 个 │ 来泡一杯 │ 1(茶) │ 确定 │ └────────────────┴──────────┴───────────────┴──────┘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值