V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Aceyclee
V2EX  ›  程序员

寻找成套的 App SDK 服务

  •  
  •   Aceyclee ·
    Aceyclee · 2017-08-08 15:19:20 +08:00 · 2433 次点击
    这是一个创建于 2662 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    对于开发者来说,三方 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 的臃肿也利于低耦合。 模块化 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 身上的时候,让我们觉得越来越舒服、越来越轻快。

    honkew
        1
    honkew  
       2017-08-08 16:48:35 +08:00
    ad

    极光推送价格有点贵,我选 cnzz
    denghongcai
        2
    denghongcai  
       2017-08-08 16:56:23 +08:00
    广告就是广告,摆正广告的姿态

    没人跟你套 "我们” 的近乎
    robertlyc
        3
    robertlyc  
       2017-08-08 16:57:52 +08:00
    广告君 贵司前 cto 飞林沙去哪里了
    XuweiatTuSDK
        4
    XuweiatTuSDK  
       2017-08-08 18:18:29 +08:00
    突然发现我的台词没了……
    sobigfish
        5
    sobigfish  
       2017-08-08 19:53:16 +08:00
    推广 还打着**的幌子
    q99103248
        6
    q99103248  
       2017-08-08 23:18:16 +08:00
    措不及防的广告
    haozes
        7
    haozes  
       2017-08-09 06:12:22 +08:00 via iPhone
    没有 swift 版的我看都不看
    holysin
        8
    holysin  
       2017-08-09 11:35:32 +08:00
    或许真的就是极光的客户在帮安利呢......
    LittleYangYang
        9
    LittleYangYang  
       2017-08-09 11:52:10 +08:00
    从未见过如此厚颜无耻之人......
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:29 · PVG 08:29 · LAX 16:29 · JFK 19:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.