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

目录
相关文章
|
Web App开发 数据采集 搜索推荐
大麦网抢票程序之Selenium的使用
大麦网抢票程序之Selenium的使用
1213 0
大麦网抢票程序之Selenium的使用
|
开发者 Windows
windows | windows11打开手机app
手机上面用习惯了app,那么我们电脑上面可以使用吗?肯定是可以的啦!不用模拟器!
273 0
windows | windows11打开手机app
|
编解码 前端开发 JavaScript
脚本 | 大麦网脚本优化
基于上次的脚本,做出了一些优化。
330 1
|
数据库
代码自动生成工具实战-Cursor
之前看过github copilot 的代码生成能力。可以说解放了码农的双手,基础的代码完全可以来生成。可是后来它收费了。
435 0
|
Java Android开发
反编译之利用AndroidStudio动态调试smali源码1
反编译之利用AndroidStudio动态调试smali源码
|
黑灰产治理 Python
点击器 | 大麦网的反思
两天研究了下大麦网,在经历了抢票没抢到,群友讨论脚本如何修改以及大麦网规则等事件之后,我发现了以下规则。
454 0
|
域名解析 SEO 搜索推荐
网络基础知识之————A记录和CNAME记录的区别
1、什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址。域名的解析工作由DNS服务器完成。
9929 1
|
8月前
|
测试技术 数据安全/隐私保护 Python
大麦网抢票攻略:使用Python Selenium实现
大麦网抢票攻略:使用Python Selenium实现
|
10月前
|
API Python
Python实现大麦网抢票的四大关键技术点解析
随着互联网的普及和发展,线上购票已经成为人们生活中不可或缺的一部分。然而,在抢购热门演出门票时,往往会遇到抢票难、抢票快的问题,有时候一秒钟的延迟就意味着与心仪的演出擦肩而过。为了解决这个问题,技术爱好者们开始探索利用Python多线程技术来提高抢票效率。本文将介绍Python实现大麦网抢票的四大关键技术点,帮助读者了解抢票脚本的核心原理,并通过示例代码详细说明实现过程。
|
测试技术 Android开发 Python
python | 大麦网抢票(移动端)
上篇文章写到了使用windows11打开安卓应用,那么使用python来抢大麦网票应该也是可以的吧。库使用的是`pyautogui`。
1079 0
python | 大麦网抢票(移动端)