Android开发第三方库的使用和集成

一、第三方SDK开发

App开发

APP开发是指的具体某个具体的项目,更倾向于用户体验、功能更偏于特定业务、讲究的是快速迭代、快速占领市场,通常会涉及到多个模块或者多个业务场景。

SDK开发

SDK 是为APP服务的,提供的大多是公共基础服务,如网络请求、打点统计、帐号服务等,在App开发过程中,通常会使用到别人已经开发好的sdk。

第三方的SDK往往要做到一下几个方面:

  • sdk的体积要尽可能的小。如果sdk的体积过大,会遭到开发者或者团队的抱怨,久而久之,对sdk的推广和普及造成不好的影响。
  • 专注核心功能。在开发SDK的时候,一定要聚焦最核心的功能,减少接入者和使用者的学习成本,减少不必要的核心功能;如果sdk提供多功能,而又不属于同一核心功能模块,最好能够分开提供sdk,让开发者可以自行选择,不要替用户做选择,否则会适得其反。
  • 接入和使用成本低。第三方的sdk接入,毕竟属于外部的库集成,因此,要保证sdk在接入和使用上尽可能的简单和傻瓜,然公开发这可以直接跟着简单的文档几个步骤就能快速看到效果。另外还有一个,代码不要有侵入性,所谓的侵入性是指,要尽量避免sdk的代码要混在项目的业务开发中的情况的发生。某个sdk如果在继承时是侵入性的,那多半会遭到用户的吐槽。
  • 兼容性:兼容性涉及三个方面的内容:
    • API兼容性:每次版本更新后,对外接口要尽可能保持不变。如果有新接口,可以做说明,不能直接删除老接口。
    • 功能兼容性:在不影响整体功能和项目结构的基础上提供部分业务的需求定制化,可以形成配置项。
    • Android系统版本的兼容性:如果自己维护的项目是一个要提供给别人的sdk,最好不要依赖或者尽最大可能限度的依赖第三方的库,因为如果开发者在其项目中也用到了同样的依赖库的话,可能会造成库冲突。
  • 稳定性:除了兼容性外,还要保持sdk的稳定性。在sdk开发前就要设计和考虑好sdk的结构,不要随意变更。

二、集成第三方SDK

除了一个公司推广自己的业务,通过专业的团队来来开发维护一个SDK,供开发者使用外。更多的关于SDK的使用场景是作为开发者要在自己的项目和业务中集成相应的第三方的SDK的功能。

比如,常见的第三方的SDK的集成包括:社会化分享、移动应用统计、消息推送、支付等,下面我们来逐一看看如何集成第三方的SDK。

2.1、社会化分享SDK

经常用到的各种社交软件,比如微信、微博、QQ等众多的应用。在应用开发中,常常有需要将自己业务的一些h5页面或者动态分享到其他的这些平台。

完成分享到这些平台有两个方案:

  • 逐一集成:依次注册第三方社交平台,然后逐一下载对应的sdk和文档,进行集成。这种集成方式需要对接的平台很多,效率不高。而且因为技术含量不高,耗费时间长,所以显得冗余。
  • 统一集成:很多团队和创业者看到了逐一集成的痛点,于是将市场上常见的社交类软件全部做了集成,然后分装在一个sdk中,统一向开发者提供服务。做统一集成这类服务的公司有很多,比如:友盟,MobTech等。

友盟sdk

友盟+逐渐发展成了集:统计分析、开发者工具、营销增长、数据采集以及云服务产品的国内领先的第三方全域数据智能服务商,目前属于阿里阵营。

友盟的网址:https://www.umeng.com/?spm=a213m0.14091848.0.0.493558c7aLBavB

Android的SDK集成文档的链接:https://developer.umeng.com/docs/119267/cate/118577

友盟示例Demo链接:https://github.com/umeng/MultiFunctionAndroidDemo

友盟分享的SDK开发文档:https://developer.umeng.com/docs/128606/detail/129622

集成友盟SDK需要经过几个步骤:

  • 注册友盟账号并登录
  • 后台创建应用,选择移动应用,并填写相关信息,获取到AppKey,供在项目中集成使用。
  • 下载对应的SDK,并设置成为项目依赖库
  • 填写Appkey等信息,在代码中做相应的集成
  • 调用库功能API

注册友盟账号

 

新用户注册后的后台工作台,如上图所示。

添加新应用

 

接下来是注册app,填写相关信息,得到一个Appkey,比如:5eca9090dbc2ec0816fa1345

集成SDK

集成SDK有两种方式,既可以通过maven线上接入sdk,也可以手动下载SDK,网络环境允许的情况下,都推荐在线集成。

集成配置

  • 权限申请:要按照接入文档的描述,在清单配置文件中声明集成的sdk所需要的权限
  • 混淆保护:第三方的sdk一般都要加混淆保护,按照说明文档添加即可。
  • 初始化配置:通常在集成第三方sdk时,都需要在自己的Application中进行初始化。

 

2.2、应用统计SDK

Bugtags主要是为移动产品质量的测试平台产品。使用Bugtags平台可以随时随地对移动产品提出准确的改善意见,使得测试更简单,修复问题更轻松。

在开发过程中经常使用BugTags来进行产品的埋点,用户行为跟踪,事件分析,以及bug的收集和处理,主要的目的有两个:

  • 收集跟踪项目问题,解决bug
  • 收集业务数据,分析业务流程

两者合起来,最终的目的是提高项目质量。

BugTags的官方网站:https://www.bugtags.cn/

sdk集成

官方提供了SDK集成文档,可以参考如下:https://docs.bugtags.cn/zh/start/integrate/android/maven.html

示例参考sdk对应的Demo。

2.3、消息推送SDK

消息推送的场景

消息推送主要指的是自动传送信息给用户。随着智能推荐算法的崛起,现在的应用,往往可以根据用户的过往行为数据,根据用户的兴趣来搜索、过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息。比如,现在常常见到的:淘宝京东的商品打折推荐,应用的活动通知推送,微博的消息推送,抖音的关注用户直播推送,等均属于推送的使用。

推送的原理

如何使客户端能够实时的收到服务器的消息和通知,总体来说有两种方式:

  • pull方式:客户端每隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。
  • push方式:服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。
    这样,客户端就能自动的接收到消息。

总结:Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式比Pull方式更优越。因为Pull方式更费客户端的网络流量,更主要的是费电量,还需要我们的程序不停地去监测服务端的变化。

消息推送解决方案

依据以上的推送原理,有几种解决方案:

  • C2DM推送:C2DM由Google提供服务。该服务可以从服务器上向应用程序建立通信,发送相关数据。由于国内网络环境的问题,该方案不可用。
  • MQTT协议:MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。
  • XMPP:基于xml格式的协议,主要用于IM即时通讯。
  • 第三方:由专业的团队开发的第三方推送服务平台。

个推的sdk集成

与前文的友盟一样,个推是主要提供消息推送、数据统计、运营推广等业务的第三方平台,个推因消息推送而起家。除个推外,还有小米推送,华为推送等等很多其他的推送,原理系统,只是厂商不同而已。

个推的官方网站:https://www.getui.com/

个推SDK的集成文档:http://docs.getui.com/getui/

个推的类型

在个推的sdk中,接收得消息后,根据是否以标准形式展示,一共分为两类,分别是:

  • 通知:即在客户端的sdk接收到服务器的消息后,会按照统一的格式封装成为一个通知,然后在用户移动设备的通知栏中进行显示。
  • 透传:透传可以理解为自定义的消息,透传消息类别中,个推只负责消息传递,不做任何处理,APP在接收到透传消息后可按自身需求处理消息的展示方式或后续动作。透传的自定义程度较高,可能没有页面展示,适用于处理APP内部逻辑。

注意事项

个推在进行SDK接入过程中,除了客户端sdk需要接入外,还要服务端的配合。

 

2.4、支付SDK

上面讲的三个都是业务中常用的,比较简单的就可以接入。

目前随着移动应用,视频带货,线上购物消费场景的兴起,移动支付成了各个应用变现业务的必须环节。在开发自己的项目时,如果涉及到交易的业务,可以接入:支付宝、微信支付、百度支付、银联等渠道的支付,还有二维码支付等等。

此处以微信支付接入为例。

微信支付的官方网站如下所示:https://pay.weixin.qq.com/wiki/doc/api/index.html

可以支持的场景很多,我们主要看APP支付,其他都是一样的原理。

前提准备

无论是微信支付,还是支付宝支付,都需要一些前提准备:

  • 商户注册:首先需要做的是注册商户,填写商户信息。
  • 支付认证:注册后的商户,仅仅能使用分享等一些基础功能,无法使用高级功能。微信支付因为涉及到金额,因此需要进行商户认证。商户认证需要提供公司主体信息,营业执照,还要提供法人的信息,开户银行账号等信息,认证费每年300元,由认证公司收取,每年认证一次。
  • 申请应用:完成认证后的商户,可以在创建的应用中使用和集成支付功能。

APP支付的接入文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1

支付业务流程

因为支付涉及到结算业务,安全性要求较高,所以首先要了解完整的支付流程,如下图所示:

从上图中我们可以总结几个重要的步骤:

  • ① 用户在商户APP中选择商品,提交订单,选择微信支付。
  • ② 商户后台(服务器)收到用户支付单,调用微信支付统一下单接口。
  • ③ 统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。
  • ④ 商户APP调起微信支付。
  • ⑤ 商户后台接收支付通知。
  • ⑥ 商户后台查询支付结果。

 

注意事项:

  • 下单:按照官方提供的说明文档按照正确的顺序和参数进行构建下单参数,并进行签名。签名时用非对称签名,需要使用rsa和rsa_pub两个文件。
  • 确认支付状态:App端确认是否支付完成的状态时,以商户的后台订单状态为准,不能以其他渠道的状态为准。
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方开源组件: 网络请求android-async-http 图片异步加载universal-image-loader Sqlite数据操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码 百度地图定位SDK 谷歌依赖注入RoboGuice WebService调用ksoap2 XML解析XStream 动画开源nineoldandroids 表单验证android-validation-komensky 更多优秀开源等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持多种接口回调 SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、对话框三种提示 文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验 证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共 通方法 数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操 作 读取本地资源工具类(ToolResource.java),反射本地资源文件API,避免依赖R文件,方便 jar形式发布 Android单位转换工具类(ToolUnit.java),sp/dp/px互转 自定义Toast工具类(ToolToast.java),自定义背景色、字体颜色、大小、边框等 Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/XMLPullPaser模式解析、生成XML操作 XMPP操作工具类(ToolXMPP.java),基于XMPP协议的相关API操作 适配字体工具类(ToolAutoFit.java),代码根据设备密度自动缩放View的字体大小 LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务 器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片RoundImageView 自定义样式风格Progres
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值