Skip to content

An iOS Github client APP implemented using pure Swift language.

License

Notifications You must be signed in to change notification settings

buptwsg/SwiftyGitClient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwiftyGitClient

An iOS Github client APP implemented using pure Swift language.

Github API总结

决定使用的是REST API v3

Accept: 建议加上这个头,并设为applicationvnd.github.v3+json
User-Agent: 请求的时候需要设置User-Agent头,值可以是用户名或是应用名。如果不加这个头,请求会被拒绝。

Rate limiting: 对于OAuth,一个小时可以请求最多5000次。

Pagination: 在分页请求的场合,不要自己去构造URL,而是使用Link Header中的值。

拿到token的时候,还要检查返回的权限是否和请求的权限完全一样,因为用户可以修改授予的权限。

参考应用中用了一个开源的项目实现的API,本项目决定自己实现API。

已知的一些iOS客户端:
CodeHub
Monkey for GitHub
PPHub
NapCat: 被人推荐,功能比较强大
GitBucket

目标:参照以上APP,做一个自己的客户端产品,但是要超越已有产品。

竞品分析

CodeHub

OAuth认证流程不能正常工作,无法登录。

Monkey

  • 第一个TAB:用户。根据所在位置(世界/国家,城市),编程语言,列出用户的排名。点击一个用户进入个人主页。
  • 第二个TAB:仓库。根据选择的编程语言,列出仓库的排名,排序依据是star的数量。点击一个仓库进入仓库详情页。
  • 第三个TAB:发现。可以查看trending, showcases, 动态,可以搜索用户,仓库。
  • 第四个TAB:更多,里面有登录,关于,反馈三个功能。

不登录也可以玩,但是在登录的时候发现Oauth无法完成,登录不进去。

总体印象:
功能比较简单
很多关键的地方用了Webview来显示,这样又有什么意思呢?

GitBucket

国内雷纯峰写的,用了MVVM的架构。

  • 第一个TAB: News。列出了当前用户的一些动态,例如:所关注的人关注了什么项目,创建了什么仓库,自己的项目被什么人关注了,fork了。
  • 第二个TAB:Repositories。列出了自己相关的仓库:拥有的,关注的。其实是不是还应该分的更细:All, Public, Private, Sources, Forks,象Github网页版那样。
  • 第三个TAB:发现。可以查看如下内容:Trending repositories this week(根据语言和时间范围),Popular repositories(根据语言),Popular users(根据国家和语言)。上方还有一个banner,需要去查一下拉取的是什么内容)。
  • 第四个TAB:个人资料页。

缺的功能:
创建仓库
创建gist 仓库详情页面,不能查看Issues, Pull Requests, Contributors。
个人页设置功能比较少,不能对仓库进行管理
没有组织的相关功能

总体印象:
还是不错的,对我来说,第一步可以把这些功能都实现了,就已经不错了,可以拿来说事了。

PPHub

为了下载,还花了12元RMB。
但实际上做的一般,并不比GitBucket强,界面上询问的TABBAR居然为白色。

NapCat

居然也是OAuth流程不工作,不知道是公司网络的原因,还是APP自身的问题。

API

GET /users/:username/received_events

Watch仓库,或是关注用户以后,都会收到事件。如果当前用户是被认证的,那么能够看到私有的事件。否则只能看到公开的事件。

GET /users/:username/events

List public events performed by a user

About

An iOS Github client APP implemented using pure Swift language.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published