OpenShare实现(1):why

简介: <p style="margin-top:0px; margin-bottom:15px; padding-top:0px; padding-bottom:0px; color:rgb(92,92,92); font-family:'Helvetica Neue',Helvetica,Arial,Verdana,'Hiragino Sans GB','Noto Sans CJK SC','

开发喜地iOS版的时候,商品需要分享到微信、QQ、微博之类的社交网络。按照传统的方法,去各个官方平台的开发者网站,下载SDK,然后集成进去。这样做会导致最后打包的app体积增大不少,而且每个平台API使用方法都不统一,研究每个平台分享、登录功能,也浪费了不少时间。

于是为什么不封装一下呢?就像iOS Social framework。默认已经封装了下面几种社交网络:

#SLServiceTypes.h
SOCIAL_EXTERN NSString *const SLServiceTypeTwitter NS_AVAILABLE(10_8, 6_0);
SOCIAL_EXTERN NSString *const SLServiceTypeFacebook NS_AVAILABLE(10_8, 6_0);
SOCIAL_EXTERN NSString *const SLServiceTypeSinaWeibo NS_AVAILABLE(10_8, 6_0);
SOCIAL_EXTERN NSString *const SLServiceTypeTencentWeibo NS_AVAILABLE(10_9, 7_0);
SOCIAL_EXTERN NSString *const SLServiceTypeLinkedIn NS_AVAILABLE(10_9, NA);

比如我们想分享到新浪微博:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
        if (result == SLComposeViewControllerResultCancelled) {
            NSLog(@"Cancelled");
        } else
        {
            NSLog(@"Done");
        }
        [controller dismissViewControllerAnimated:YES completion:Nil];
    };
    controller.completionHandler =myBlock;
    [controller setInitialText:@"Hellow world"];
    [controller addURL:[NSURL URLWithString:@"http://openshare.gfzj.us/"]];
    [controller addImage:[UIImage imageNamed:@"test.png"]];
    [self presentViewController:controller animated:YES completion:Nil];
}
else{
    NSLog(@"SinaWeibo UnAvailable");
}

如果想换成twitter,只需要把SLServiceTypeSinaWeibo换成SLServiceTypeTwitter就可以了。非常简单易用。

SLComposeViewController的分享并不用转到响应的社交网络客户端,只需要在系统中配置账号就可以了。对于其他类型的社交网络,比如微信暂时并没有集成,而且不支持「第三方登录」,不能设置appkey从而带个尾巴(也是一件好事,这样不用开发者去各自平台申请key了),也不能实现平台官方支持的分享类型。

Social framework是一个很好的设计,但是还是没有官方SDK提供的功能多。那我们能不能研究一下各个平台SDK和客户端通信的机制?然后对各个平台进行封装,这样就能想Social framework一样方便调用,又有官方SDK的功能?

实际上是可以的,而且已经实现了:https://github.com/100apps/openshare

OpenShare

目录
相关文章
|
域名解析 SEO 搜索推荐
网络基础知识之————A记录和CNAME记录的区别
1、什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址。域名的解析工作由DNS服务器完成。
9770 1
【资源分享】阿里云盘资源永久汇总页
不知道大家的阿里云盘现在有多少容量了?阿里为了资源也为了网盘活跃度,在九月推出限时活动,分享赢10T容量。因此带来了这一波的阿里盘分享热潮,当然大部分人都是奔着10T去的。所以网上资源翻来覆去的很多,重复的也多。正因如此空空发现了一位网友非常的有心,将分享出来网盘资源进行了梳理汇总,并且搭建了这个终极阿里云盘资源整合网站——【阿里云盘资源永久汇总页】。
218777 11
【资源分享】阿里云盘资源永久汇总页
|
7月前
|
测试技术 数据安全/隐私保护 Python
大麦网抢票攻略:使用Python Selenium实现
大麦网抢票攻略:使用Python Selenium实现
|
测试技术 Android开发 Python
python | 大麦网抢票(移动端)
上篇文章写到了使用windows11打开安卓应用,那么使用python来抢大麦网票应该也是可以的吧。库使用的是`pyautogui`。
1064 0
python | 大麦网抢票(移动端)
|
9月前
|
API Python
Python实现大麦网抢票的四大关键技术点解析
随着互联网的普及和发展,线上购票已经成为人们生活中不可或缺的一部分。然而,在抢购热门演出门票时,往往会遇到抢票难、抢票快的问题,有时候一秒钟的延迟就意味着与心仪的演出擦肩而过。为了解决这个问题,技术爱好者们开始探索利用Python多线程技术来提高抢票效率。本文将介绍Python实现大麦网抢票的四大关键技术点,帮助读者了解抢票脚本的核心原理,并通过示例代码详细说明实现过程。
|
测试技术 Android开发 数据安全/隐私保护
脚本 | 手机大麦网脚本使用说明
这篇文章主要针对上篇文章的代码做一个使用说明
1995 0
|
开发者 Windows
windows | windows11打开手机app
手机上面用习惯了app,那么我们电脑上面可以使用吗?肯定是可以的啦!不用模拟器!
263 0
windows | windows11打开手机app
|
编解码 前端开发 JavaScript
脚本 | 大麦网脚本优化
基于上次的脚本,做出了一些优化。
316 1
|
黑灰产治理 Python
点击器 | 大麦网的反思
两天研究了下大麦网,在经历了抢票没抢到,群友讨论脚本如何修改以及大麦网规则等事件之后,我发现了以下规则。
437 0
|
9月前
|
存储 Windows
下载Windows ISO镜像的方法
一、镜像介绍 1、大概介绍 .iso 是电脑上镜像的存储格式之一,所以通常在电脑中以后缀.iso命名,俗称iso镜像文件。 2、详细介绍 ISO镜像文件_百度百科 二、下载Windows 11镜像 1、Windows 11 官方下载网址 https://www.microsoft.com/zh-cn/software-download/windows11 2、步骤 点击官网地址,进入windows11官网,找到下载 Windows 11 磁盘映像 (ISO)
2525 0

热门文章

最新文章