前言

对于开发者来说,三方 SDK 这个词已经是一个不需要任何解释的词语了,然而我想面对琳琅满目的 SDK 产品,大家都会纠结如何选择。那么选择一个 SDK 需要注意哪些问题呢?

  • SDK 的 稳定易用
  • 需要 持续更新功能
  • BUG 修复 效率高
  • 开公司不像开玩笑(说倒闭就倒闭了)
  • 售后 Kill 问题的能力
  • 与自身 需求的契合度等等...

最后,还有一个选择点让人容易忽略

各个 SDK 的统一性

也就是在其功能相对 OK 的情况下,尽量使用同一厂商提供的 SDK 。

为什么这样说?

我想每个开发者都有到各大平台去注册开发者账户,然后申请应用这样的繁琐操作。

如果你有 5 个功能采用了 5 个公司 SDK ,我想,真的是一件让人抓狂的事!

不仅如此,对代码的管理、项目维护都是一件相当麻烦的事。

综上,我们期待有一个能够解决多个功能的三方 SDK 。

在这种成套的 SDK 公司的选择上,也让我纠结很久,有些公司做的很单一;有些公司 SDK 不符合我们对 SDK 处女座般要求。

后来在公司维护推送的时候,偶然发现极光对其他服务(IM通讯短信下发统计分享)的支持,心中顿喜。仔细研究后,确实没有让人失望。

极光成套的 SDK

极光推送

既然是成套介绍,还是先说极光推送吧。

想了半天都无从下口,因为实在太出名了。我是个 iOS 开发者,我个人在使用极光推送的时候,也写了一篇总结性技术博客,若有兴趣可以查看。

首先看一张极光官网展示的图片

都是知名 App,也让我们对自己的选择有了不少信心。

JPush 提供四种消息形式:通知自定义消息富媒体本地通知

再来看一张 JPush 的运行流程图

简单来说,通过自己部署的服务端与极光云端传讯,极光通过两个渠道与手机传讯。

因为是说明文,我就不贴代码了,具体实现和使用请看官方文档

目前我自己公司是正在使用极光推送,准时准确率是非常高的,也很容易管理消息。也是因此,让我有兴趣看向极光的其他产品。

极光 IM(JMessage)

看到极光推出即时聊天,很让人惊喜,但又觉得似乎本应如此。因为极光推送这么强大,那么理应推出同类功能的即时聊天。

值得一提的是,极光所有的 SDK 都是模块化的,即不同需求可分开实现。看下图,你就明白,这样的好处是,解决了 SDK 的臃肿也利于低耦合。



对于聊天,我想大家和我一样关心一个问题,提供聊天 UI 工具吗?

也不能说我们开发者懒,毕竟这个东西自己写实在是费事,对于现在部分公司的快速开发要求,明显是吃力的。

好消息是,极光提供 UI 工具类,但是可能大部分人说了,在哪?我怎么没见到。其实这个工具被极光开源在了他们的 GitHub。iOS 方面是使用 Swift 编写,直接开源,终于又有看大神源码的机会了。

另外,我在查看 JMessage 集成文档的时候发现,他们的 iOS 代码文档是采用 Appledoc 编辑的,简单来说就是苹果风,我们都知道苹果在文档方面的编写是相当卓越的。

极光 Share(JShare)

说到极光社交,大家可能会说,我使用了友盟社交,也很不错。的确如此,不过这不符合我们对套装的要求,既然极光提供社交分享,为何不用呢?

分享其实是一个不复杂的功能,但是集成却挺麻烦,这里不是说 SDK ,主要是个大平台的注册,真的多,我自己公司分享 5 个平台,每个平台都要去拿 AppKey ,这样是没办法的事。分享代码示例:

JSHAREMessage *message = [JSHAREMessage message];
message.text = @"JShare SDK 支持主流社交平台、帮助开发者轻松实现社会化功能!";
message.platform = JSHAREPlatformQQ;
message.mediaType = JSHAREText;
[JSHAREService share:message handler:^(JSHAREState state, NSError *error) {
NSLog(@"分享回调");
}
}];

在三方登录方面,相同的,极光也提供了一个总体的回调函数,不管什么平台登录都会回调这个函数,在里面拿到平台用户的 名称头像等信息。

[JSHAREService getSocialUserInfo:platfrom handler:^(JSHARESocialUserInfo *userInfo, NSError *error) {
NSString *alertMessage;
NSString *title;
if (error) {
title = @"失败";
alertMessage = @"无法获取到用户信息";
}else{
title = userInfo.name;
alertMessage = [NSString stringWithFormat:@"昵称: %@\n 头像链接: %@\n 性别: %@\n",userInfo.name,userInfo.iconurl,userInfo.gender == 1? @"男" : @"女"];
}
UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:title message:alertMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[Alert show];
});
}];

极光统计(JAnalytics)

极光统计提供了页面统计地理位置统计崩溃日志统计购买统计登录统计等等……前面列举的都是我们平时开发常用的。

对一个公司来说,想了解用户对自身产品的回应度,统计是必不可少的。我记得马云在一个节目里面说起大数据的好处,他自问自答,你们知道哪个省的女人胸平均最小吗?浙江省。虽然是个活跃气氛的玩笑话,却是个真实的玩笑话,足以说明了数据的重要性。

极光统计可帮助开发者了解用户的属性和使用情况,优化用户体验,为企业决策提供有效的数据支撑。

简单说下用法

页面统计,在这两地方调用方法就能记录用户进出页面的路径、时间了

     - (void)viewDidAppear:(BOOL)animated {
[JANALYTICSService startLogPageView:@"first_page_flow"];
}
- (void)viewDidDisappear:(BOOL)animated {
[JANALYTICSService stopLogPageView:@"first_page_flow"];
}

崩溃统计、就一行代码

        [JANALYTICSService crashLogON];

地理位置统计,更新位置后调用以下代码

        CLLocation * location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(116.46, 39.92) altitude:50 horizontalAccuracy:50 verticalAccuracy:50 timestamp:[NSDate date]];
[JANALYTICSService setLocation:location];

使用都相当的简单。

极光短信(JSMS)

短信通知,这使用率实在太多了,生活中各种短信验证码横行无忌,已然成为了各种产品会员注册、商品推广的重要渠道。

在我的公司,短信下发都是有后台开发者统一管理的,前端人员调用接口即可。

极光短信提供 文本短信语音短信单条模板群发模板等发送场景

来看下极光短信提供给服务端调用短信的 API



返回示例

//发送成功
{"msg_id": "288193860302"}`
//发送失败
{
"error": {
"code": *****,
"message": "******"
}
}

具体开发文档请点击这里查看

总结

以上介绍了极光平台提供的 推送聊天社交短信统计功能,这些功能都是我们 App 开发中最常用到的一部分功能。而极光在这些服务方面做的都是不错的,当然,除却 推送的高知名度外,其他的服务似乎不那么被人所知。就像如果你不看这篇博客,可能你并不知道极光有自己的GitHub 开源代码

在这个各种 SDK 层出不穷的互联网中,各种竞争日趋激烈,但不论如何,我们开发者所关注的永远是优质的代码与售后服务。

最后,期待极光的这个套装在穿在我们 App 身上的时候,让我们觉得越来越舒服、越来越轻快。

作者:张雨露

来自江苏南京的 iOS 研发工程师,目前就职于南京银城千万间资产管理有限公司,负责旗下 App 的全责开发。常活跃于 GitHub、简书等平台。

原文链接:寻找成套的 App SDK 服务

知乎专栏:极光日报

用户体验 | 寻找成套的 App SDK 服务的更多相关文章

  1. 用户体验要好,App动画得这么做

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具.   在用户体验设计方面,App动画的设计和添加,带给设计师无限的创造空间的同时,也成为设计师群体最具 ...

  2. 追求极致的用户体验ssr(基于vue的服务端渲染)

    首先这篇博客并不是ssr建议教程,需要ssr入门的我建议也不要搜索博客了,因为官网给出了详细的入门步骤,只需要step by step就可以了,这篇博客的意义是如何使用ssr,可能不同的人有不同的意见 ...

  3. “今日校园” App 用户体验分析

    一.背景 为进一步提升信息化应用水平,更好的服务师生,南通大学智慧校园移动端APP“今日校园”定于11月5日正式上线运行.登陆APP可浏览学校新闻.校园生活.各部门微信公众号等内容,查看校内通知.校内 ...

  4. Progressive Web App是一个利用现代浏览器的能力来达到类似APP的用户体验的技术——不就是chrome OS吗?

    什么是Progressive Web App? Progressive Web App是一个利用现代浏览器的能力来达到类似APP的用户体验的技术,由Google实现,让浏览器打开的网址像APP一样运行 ...

  5. 马蜂窝 iOS App 启动治理:回归用户体验

    增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...

  6. 如何提高手机APP的用户体验?

    详细内容请点击 随着移动互联网如日中天,如火如荼的时候,手机APP开发日益高涨了起来,关于手机APP的用户体验,也是一个老话长谈的话题.从事这行业也很久了,以下是我个人在工作中的一些关于APP的用户体 ...

  7. 移动APP的用户体验测试

    经常被问到用户体验测试,什么是用户体验测试,用户体验测试要关注的都有哪些呢,现在为大家来罗列一下: 1.横竖屏测试 在移动设备上做用户体验测试,最容易想到的就是对APP做横竖屏的测试来观察APP的显示 ...

  8. App登录注册功能,怎样做到用户体验最佳?

    用户登录系统,可以细分为三项功能模块,分别是:登录.注册和密码找回.本文作者将结合自身经历,谈谈他在做这块的时候一些想法,主要是涉及业务流程. 登录和注册功能,不论是PC端还是移动端,大多数产品都会涉 ...

  9. APP开发中,如何从UI设计上提升APP用户体验

    设计中有很多细微的东西要注意,就如UI设计中,元素的统一性,图标风格.段落的排版等等,只有能注意这些细节,你的 APP UI 才算合格. 干货君总结了17个提升用户体验的 UI 设计小技巧,也是我们日 ...

随机推荐

  1. SICP-1.7-递归函数

    递归函数 函数内部直接或间接的调用函数自身 将复杂问题简单化 例子程序 def sum_digits(n): """Return the sum of the digit ...

  2. java源码学习(五)LinkedList

    LinkedList [TOC] 一.定义 public class LinkedList<E> extends AbstractSequentialList<E> imple ...

  3. session或memcache过期之后跳转到登陆页面并跳出iframe框架

    <!--在你想控制跳转的页面,比如login.html中的<head>与</head>之间加入以下代码:--> <script> if (window ...

  4. linux 升级yum对应的python

    这里记录一下linux 系统升级python对yum带来影响的解决办法 很多人在使用linux系统执行python任务的时候需要升级linux系统自带的python到高级版本.具体如何升级python ...

  5. css实现居中的五中方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Android-->创建自定义控件

    1.仿 iPhone 的风格,在界面的顶部放置一个标题栏. <?xml version="1.0" encoding="utf-8"?> <R ...

  7. dynamic-load-apk 插件与宿主方法互调

    新建项目 DlPluginHost,下载dynamic-load-apk源码 1.将dynamic-load-apk 文件夹中的lib做为module导入到DlPlginHost 2.导入到Plugi ...

  8. Spring框架下的定时任务quartz框架的使用

    手头的这个项目需要用到定时任务,但之前没接触过这东西,所以不太会用,从网上找资料,大致了解了一下,其实也不难.Java的定时任务实现有三种,一种是使用JDK自带的Timer那个类来实现,另一种是使用q ...

  9. Linux 密钥验证

    服务端配置puttygen 生成公钥,保存私钥复制公钥,写入服务端mkdir /root/.sshvi /root/.ssh/authorized_keys 生成文件,将公钥写入到文件中chmod 7 ...

  10. Java 多态透析 详细理解

    1:什么是多态 一个对象的多种状态 (老师)(员工)(儿子) 教师 a =老钟; 员工 b =老钟; 2:多态体现 父类引用变量指向了子类的对象          Father f = new Son ...