[开源]iOS 新闻客户端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
black
V2EX    分享创造

[开源]iOS 新闻客户端

  •  
  •   black
    guojiubo 2015 年 5 月 18 日 7190 次点击
    这是一个创建于 3890 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简阅是我去年开发的一款 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 年 5 月 18 日
    很好,谢lz
    loveuqian
        2
    loveuqian  
       2015 年 5 月 18 日
    我收藏夹里面有个这个东西
    http://cnbeta.oschina.mopaas.com/
    black
        3
    black  
    OP
       2015 年 5 月 18 日
    @loveuqian 欢迎 PR 把这个查看过期评论的功能加进来 ^_^
    yangxiongguo
        4
    yangxiongguo  
       2015 年 5 月 18 日
    好强,学完基础就去看。
    Troevil
        5
    Troevil  
       2015 年 5 月 18 日
    thanks ,虽然没碰过IOS,但是是一个好的学习历程,先存着。
    Troevil
        6
    Troevil  
       2015 年 5 月 18 日
    @Troevil 例程 。。
    black
        7
    black  
    OP
       2015 年 5 月 18 日
    @Livid 请教一下我帖子里面的markdown是写错了吗,为什么没有显示呢?
    Livid
        8
    Livid  
    MOD
    PRO
       2015 年 5 月 18 日
    @black 没有写错,只是没有打开。

    是我们这块的用户体验不够清晰。
    Livid
        9
    Livid  
    MOD
    PRO
       2015 年 5 月 18 日
    @black 现在已经打开了。

    只要是通过 new 这个接口发出来的帖子,就是默认打开这个功能。
    missdeer
        10
    missdeer  
       2015 年 5 月 18 日
    其实我想问,这录像是怎么做的?
    black
        11
    black  
    OP
       2015 年 5 月 18 日
    @Livid 明白了,谢谢。我是通过 http://v2ex.com/new/create 发布的帖子。
    black
        12
    black  
    OP
       2015 年 5 月 18 日   1
    @missdeer QuickTime Player 的 Movie Recording 功能录制的。
    whatisnew
        13
    whatisnew  
       2015 年 5 月 18 日 via iPhone
    什么样的版权问题?
    @black
    zippera
        14
    zippera  
       2015 年 5 月 18 日
    支持一个,有空研究研究
    painter
        15
    painter  
       2015 年 5 月 18 日
    一直在用简阅 多谢楼主
    raychar
        16
    raychar  
       2015 年 5 月 18 日
    你是否有过滤过cnBeta的字样?
    black
        17
    black  
    OP
       2015 年 5 月 18 日
    @whatisnew 未经授权抓取了cb的内容
    black
        18
    black  
    OP
       2015 年 5 月 18 日
    @painter 很高兴你喜欢我开发的软件
    whatisnew
        19
    whatisnew  
       2015 年 5 月 18 日 via iPhone
    @black 这个 cb 不是有 rss 吗,你解释一下不就行了。
    black
        20
    black  
    OP
       2015 年 5 月 18 日
    @whatisnew 不是抓的rss
    black
        21
    black  
    OP
       2015 年 5 月 18 日
    @whatisnew rss有很多问题,实时性、模块单一、非全文输出、无法获取/发表评论
    wangtong868
        22
    wangtong868  
       2015 年 5 月 18 日   1
    很喜欢,现在依旧每天都会用...比CB的官方那个不知道好多少....不过貌似在更换了logo推出了增值收费计划就被下线了...
    whatisnew
        23
    whatisnew  
       2015 年 5 月 18 日
    @black 你就跟 apple store 的人说是 rss 输出的不就结了。。。他们也无从考证啊
    whatisnew
        24
    whatisnew  
       2015 年 5 月 18 日
    @black 难道是 cb 向 appstore 申诉了?
    black
        25
    black  
    OP
       2015 年 5 月 18 日
    @whatisnew 不是被 Apple 官方下架的,是我接到 cb 站长要求后主动下架的。对于不欢迎第三方开发者的平台,我表示理解并尽量远离。
    whatisnew
        26
    whatisnew  
       2015 年 5 月 18 日 via iPhone
    @black
    Mrlee
        27
    Mrlee  
       2015 年 5 月 19 日 via iPhone   1
    大赞
    ianisme
        28
    ianisme  
       2015 年 5 月 19 日   1
    不说什么了,为开源点赞!
    run2
        29
    run2  
       2015 年 5 月 19 日   1
    赞,估计因为lz的app 里的流量他们收不到广告费的关系,现在他们可以明目张胆的抄你的了
    ycge234
        30
    ycge234  
       2015 年 5 月 19 日   1
    赞赞赞。
    Mrlee
        31
    Mrlee  
       2015 年 5 月 20 日
    咦,为什么iOS应用,UI风格很像安卓的啊。比如返回放到了下面。
    smallhorse87
        32
    smallhorse87  
       2015 年 5 月 21 日
    编译不过是什么原因?楼主自己有没有试过编译GIT上下载来的工程?我用的是xCode6.3
    zxmqwer
        33
    zxmqwer  
       2015 年 5 月 21 日
    @black 网页抓取(TFHpple + XPath + NSRegularExpression)能不能用来抓取论坛、百度知道、微信这些平台的数据吗?
    black
        34
    black  
    OP
       2015 年 5 月 21 日
    @smallhorse87 我试了,没问题,Xcode 6.3.1。pod update 以后可以正常编译,你编译不过是什么错误信息?
    black
      &nbp; 35
    black  
    OP
       2015 年 5 月 21 日
    @zxmqwer 可以的。
    shiltian
        36
    shiltian  
       2015 年 5 月 21 日
    原本还打算自己用 Swift 重写一个 cnBeta 阅读器……然后……我现在还在学习 iOS 开发的路上……
    zxmqwer
        37
    zxmqwer  
       2015 年 5 月 21 日
    @black 你这是抓取一个站比较好搞。我现在要做的类似舆情监控,比如我在百度知道里面监测某个关键字,每隔一个小时抓取一次,把最新的内容给抓取回来,然后通过筛选推送到客户端显示。
    shiltian
        38
    shiltian  
       2015 年 5 月 21 日
    唔,还有啊,我现在自己就在用啊……
    black
        39
    black  
    OP
       2015 年 5 月 21 日
    @zxmqwer 嗯,你这种需求还是需要用服务器端抓取技术实现。
    black
        40
    black  
    OP
       2015 年 5 月 21 日
    @tianshilei1992 有兴趣的话可以拿简阅过去边改边学,就从改成全 Swift 实现开始吧O(∩_∩)O~~
    shiltian
        41
    shiltian  
       2015 年 5 月 21 日
    @black 好呀~其实我自己之前想的就是根据 cnBeta 提供的 RSS 来获取文章的地址,然后再处理页面了。
    c00dsummer
        42
    c00dsummer  
       2015 年 5 月 21 日
    谢谢你,正在学习 iOS 开发中!
    smallhorse87
        43
    smallhorse87  
       2015 年 5 月 21 日
    @black 我用pod update再试试;我是下载后删除 pod相关信息,重建工程
    scenix
        44
    scenix  
       2015 年 5 月 22 日
    LZ有没有兴趣创业? http://v2ex.com/t/193038
    black
        45
    black  
    OP
       2015 年 5 月 22 日
    @scenix 谢谢好意,暂时没有换工作的意向。祝你们创业顺利。
    dotCom
        46
    dotCom  
       2015 年 5 月 23 日
    star已送
    cruisehu
        47
    cruisehu  
       2015 年 5 月 24 日
    xode版本6.2 as!和集合<set>都会报错,难道是新版本的功能?
    black
        48
    black  
    OP
       2015 年 5 月 24 日 via iPhone
    @cruisehu Swift 1.2新特性,需要 Xcode 6.3版本。
    qige023
        49
    qige023  
       2015 年 5 月 25 日
    已star,感谢分享
    painter
        50
    painter  
       2015 年 5 月 25 日
    @black 问下 lz 客户端里的社会化分享用得是友盟嘛?如果是用 sso分享新浪微博 时候 如果用户手机上有新浪微博的官方客户端 会不会出现问题? 如果没有的话直接调出网页版得授权界面是没有问题的
    black
        51
    black  
    OP
       2015 年 5 月 25 日
    @painter 开源的代码里面已经移除了友盟,早先的线上版本是用的友盟,新浪微博的 SSO 分享没有发现什么问题,不知道你所指的的问题是?
    pysama
        52
    pysama  
       2015 年 5 月 27 日
    友情支持。已star。等我弄完自己这个小demo再来学习大作
    感谢@black一直以来对我的指导~
    wyk111wyk
        53
    wyk111wyk  
       2015 年 6 月 28 日
    @black 好像更新了xcode7 bate之后swift的部分又有了一些报错,由于暂时局限于OC。。。请问能修复一下吗~
    ashamp
        54
    ashamp  
       2015 年 6 月 30 日
    棒极了 已star
    jonirrings
        55
    jonirrings  
       2015 年 12 月 7 日
    来感谢一发~~自己也想手写一个 cb 客户端。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2571 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 05:53 PVG 13:53 LAX 21:53 JFK 00:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86