V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
black
V2EX  ›  分享创造

[开源]iOS 新闻客户端

  •  
  •   black ·
    guojiubo · 2015-05-18 14:35:35 +08:00 · 6546 次点击
    这是一个创建于 3458 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简阅是我去年开发的一款 iOS(iPhone + iPad) 新闻类客户端,内容抓取自 cnBeta.COM。在售期间倍受好评,但由于版权问题已于今年一月从 AppStore 下架,下架至今,每天仍有几千人在使用这款 App。

    不清楚简阅是什么的可以先观看 YouTuBe 上的30秒演示视频:

    https://youtu.be/Ere_umItcAw

    简阅完全基于客户端技术实现,希望大家不要太关注接口怎么来的之类的问题。

    以下是简阅涉及到的几个关键技术,关键字列出来方便大家有针对性的看源代码:

    • 全屏滑动(CWStackController)
    • 网页抓取(TFHpple + XPath + NSRegularExpression)
    • 夜间模式(UIAppearance + NSNotification)
    • 离线阅读(NSURLProtocol + NSURLCache + CWObjectCache + SQLite3)
    • 视频播放(HTML5 + JavaScript)

    另外,开发期间恰逢 Swift 面世,所以里面也有少量 Swift 代码。

    代码经过重构,现在开源给大家参考或学习,请勿用于任何商业用途

    GitHub:

    https://github.com/guojiubo/PlainReader

    求 star,欢迎 PR。

    55 条回复    2015-12-07 18:20:08 +08:00
    yanchao7511461
        1
    yanchao7511461  
       2015-05-18 15:21:09 +08:00
    很好,谢lz
    loveuqian
        2
    loveuqian  
       2015-05-18 15:22:29 +08:00
    我收藏夹里面有个这个东西
    http://cnbeta.oschina.mopaas.com/
    black
        3
    black  
    OP
       2015-05-18 15:26:03 +08:00
    @loveuqian 欢迎 PR 把这个查看过期评论的功能加进来 ^_^
    yangxiongguo
        4
    yangxiongguo  
       2015-05-18 15:29:02 +08:00
    好强,学完基础就去看。
    Troevil
        5
    Troevil  
       2015-05-18 15:29:22 +08:00
    thanks ,虽然没碰过IOS,但是是一个好的学习历程,先存着。
    Troevil
        6
    Troevil  
       2015-05-18 15:29:45 +08:00
    @Troevil 例程 。。
    black
        7
    black  
    OP
       2015-05-18 15:36:00 +08:00
    @Livid 请教一下我帖子里面的markdown是写错了吗,为什么没有显示呢?
    Livid
        8
    Livid  
    MOD
       2015-05-18 17:18:20 +08:00
    @black 没有写错,只是没有打开。

    是我们这块的用户体验不够清晰。
    Livid
        9
    Livid  
    MOD
       2015-05-18 17:18:43 +08:00
    @black 现在已经打开了。

    只要是通过 https://www.v2ex.com/new 这个接口发出来的帖子,就是默认打开这个功能。
    missdeer
        10
    missdeer  
       2015-05-18 17:18:45 +08:00
    其实我想问,这录像是怎么做的?
    black
        11
    black  
    OP
       2015-05-18 17:22:29 +08:00
    @Livid 明白了,谢谢。我是通过 http://v2ex.com/new/create 发布的帖子。
    black
        12
    black  
    OP
       2015-05-18 17:24:03 +08:00   ❤️ 1
    @missdeer QuickTime Player 的 Movie Recording 功能录制的。
    whatisnew
        13
    whatisnew  
       2015-05-18 17:51:11 +08:00 via iPhone
    什么样的版权问题?
    @black
    zippera
        14
    zippera  
       2015-05-18 18:22:22 +08:00
    支持一个,有空研究研究
    painter
        15
    painter  
       2015-05-18 19:07:28 +08:00
    一直在用简阅 多谢楼主
    raychar
        16
    raychar  
       2015-05-18 19:40:53 +08:00
    你是否有过滤过cnBeta的字样?
    black
        17
    black  
    OP
       2015-05-18 20:21:08 +08:00
    @whatisnew 未经授权抓取了cb的内容
    black
        18
    black  
    OP
       2015-05-18 20:21:52 +08:00
    @painter 很高兴你喜欢我开发的软件
    whatisnew
        19
    whatisnew  
       2015-05-18 20:22:54 +08:00 via iPhone
    @black 这个 cb 不是有 rss 吗,你解释一下不就行了。
    black
        20
    black  
    OP
       2015-05-18 20:24:44 +08:00
    @whatisnew 不是抓的rss
    black
        21
    black  
    OP
       2015-05-18 20:26:09 +08:00
    @whatisnew rss有很多问题,实时性、模块单一、非全文输出、无法获取/发表评论
    wangtong868
        22
    wangtong868  
       2015-05-18 20:27:21 +08:00   ❤️ 1
    很喜欢,现在依旧每天都会用...比CB的官方那个不知道好多少....不过貌似在更换了logo推出了增值收费计划就被下线了...
    whatisnew
        23
    whatisnew  
       2015-05-18 20:31:35 +08:00
    @black 你就跟 apple store 的人说是 rss 输出的不就结了。。。他们也无从考证啊
    whatisnew
        24
    whatisnew  
       2015-05-18 21:24:18 +08:00
    @black 难道是 cb 向 appstore 申诉了?
    black
        25
    black  
    OP
       2015-05-18 21:37:21 +08:00
    @whatisnew 不是被 Apple 官方下架的,是我接到 cb 站长要求后主动下架的。对于不欢迎第三方开发者的平台,我表示理解并尽量远离。
    whatisnew
        26
    whatisnew  
       2015-05-18 21:38:04 +08:00 via iPhone
    @black 👍 赞
    Mrlee
        27
    Mrlee  
       2015-05-19 04:30:32 +08:00 via iPhone   ❤️ 1
    大赞
    ianisme
        28
    ianisme  
       2015-05-19 09:46:03 +08:00   ❤️ 1
    不说什么了,为开源点赞!
    sobigfish
        29
    sobigfish  
       2015-05-19 14:05:07 +08:00   ❤️ 1
    赞,估计因为lz的app 里的流量他们收不到广告费的关系,现在他们可以明目张胆的抄你的了
    ycge234
        30
    ycge234  
       2015-05-19 17:13:03 +08:00   ❤️ 1
    赞赞赞。
    Mrlee
        31
    Mrlee  
       2015-05-20 03:13:00 +08:00
    咦,为什么iOS应用,UI风格很像安卓的啊。比如返回放到了下面。
    smallhorse87
        32
    smallhorse87  
       2015-05-21 12:32:49 +08:00
    编译不过是什么原因?楼主自己有没有试过编译GIT上下载来的工程?我用的是xCode6.3
    zxmqwer
        33
    zxmqwer  
       2015-05-21 13:50:53 +08:00
    @black 网页抓取(TFHpple + XPath + NSRegularExpression)能不能用来抓取论坛、百度知道、微信这些平台的数据吗?
    black
        34
    black  
    OP
       2015-05-21 14:22:52 +08:00
    @smallhorse87 我试了,没问题,Xcode 6.3.1。pod update 以后可以正常编译,你编译不过是什么错误信息?
    black
        35
    black  
    OP
       2015-05-21 14:24:28 +08:00
    @zxmqwer 可以的。
    tianshilei1992
        36
    tianshilei1992  
       2015-05-21 16:08:07 +08:00
    原本还打算自己用 Swift 重写一个 cnBeta 阅读器……然后……我现在还在学习 iOS 开发的路上……
    zxmqwer
        37
    zxmqwer  
       2015-05-21 16:08:37 +08:00
    @black 你这是抓取一个站比较好搞。我现在要做的类似舆情监控,比如我在百度知道里面监测某个关键字,每隔一个小时抓取一次,把最新的内容给抓取回来,然后通过筛选推送到客户端显示。
    tianshilei1992
        38
    tianshilei1992  
       2015-05-21 16:09:06 +08:00
    唔,还有啊,我现在自己就在用啊……
    black
        39
    black  
    OP
       2015-05-21 16:19:18 +08:00
    @zxmqwer 嗯,你这种需求还是需要用服务器端抓取技术实现。
    black
        40
    black  
    OP
       2015-05-21 16:20:52 +08:00
    @tianshilei1992 有兴趣的话可以拿简阅过去边改边学,就从改成全 Swift 实现开始吧O(∩_∩)O~~
    tianshilei1992
        41
    tianshilei1992  
       2015-05-21 16:34:01 +08:00
    @black 好呀~其实我自己之前想的就是根据 cnBeta 提供的 RSS 来获取文章的地址,然后再处理页面了。
    c00dsummer
        42
    c00dsummer  
       2015-05-21 17:22:56 +08:00
    谢谢你,正在学习 iOS 开发中!
    smallhorse87
        43
    smallhorse87  
       2015-05-21 17:35:10 +08:00
    @black 我用pod update再试试;我是下载后删除 pod相关信息,重建工程
    scenix
        44
    scenix  
       2015-05-22 18:20:47 +08:00
    LZ有没有兴趣创业? http://v2ex.com/t/193038
    black
        45
    black  
    OP
       2015-05-22 18:36:42 +08:00
    @scenix 谢谢好意,暂时没有换工作的意向。祝你们创业顺利。
    dotCom
        46
    dotCom  
       2015-05-23 14:59:10 +08:00
    star已送
    cruisehu
        47
    cruisehu  
       2015-05-24 11:10:29 +08:00
    xode版本6.2 as!和集合<set>都会报错,难道是新版本的功能?
    black
        48
    black  
    OP
       2015-05-24 12:05:32 +08:00 via iPhone
    @cruisehu Swift 1.2新特性,需要 Xcode 6.3版本。
    qige023
        49
    qige023  
       2015-05-25 13:04:59 +08:00
    已star,感谢分享
    painter
        50
    painter  
       2015-05-25 14:12:07 +08:00
    @black 问下 lz 客户端里的社会化分享用得是友盟嘛?如果是用 sso分享新浪微博 时候 如果用户手机上有新浪微博的官方客户端 会不会出现问题? 如果没有的话直接调出网页版得授权界面是没有问题的
    black
        51
    black  
    OP
       2015-05-25 14:39:14 +08:00
    @painter 开源的代码里面已经移除了友盟,早先的线上版本是用的友盟,新浪微博的 SSO 分享没有发现什么问题,不知道你所指的的问题是?
    pysama
        52
    pysama  
       2015-05-27 23:20:37 +08:00
    友情支持。已star。等我弄完自己这个小demo再来学习大作
    感谢@black一直以来对我的指导~
    wyk111wyk
        53
    wyk111wyk  
       2015-06-28 22:35:09 +08:00
    @black 好像更新了xcode7 bate之后swift的部分又有了一些报错,由于暂时局限于OC。。。请问能修复一下吗~
    ashamp
        54
    ashamp  
       2015-06-30 23:59:01 +08:00
    棒极了 已star
    jonirrings
        55
    jonirrings  
       2015-12-07 18:20:08 +08:00
    来感谢一发~~自己也想手写一个 cb 客户端。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4121 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 05:28 · PVG 13:28 · LAX 21:28 · JFK 00:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.