近四年独立开发经验,在 App Store 发布过 17 款独立开发作品,作品被 App Store 官方多次推荐,App 总销量已经超过 56w。公众号:KyXuIndie
【作者介绍】 KyXu,四年经验全职独立开发者,17 款独立开发上架作品。 长期致力于,帮助工程师获得工资以外的第二份收入 —— 碾压身边产品经理十倍百倍的收入。
上一篇文章讲了,想做独立开发,从一开始,我们怎样才能有一个所谓的“好点子”。首先,你要拓宽思路、发散思维地去想;然后,要把这些想法真正地和日常生活中的实际需求结合起来,真正有一个可以解决问题的 idea,这样就有了一切的开始。
说到独立开发者,大家想到的都是 iOS 的良好生态,培养了一批愿意付费的用户,也让一部分 iOS 独立开发者赚到了钱。然而,也有一些 Android 开发者,找到了正确的方向,从 Android 起家,赚到了七位数甚至八位数。
本文包括加急审核的介绍、如何使用教学,以及最重要的……加急审核必过黄金方案。 什么是加急审核 首先,提交二进制文件到 App Store,是要交给 App Store Review 团队去审核的。
内测分发测试 iOS App 的时候,在 https://developer.apple.com/account/ios/device/ 添加了设备的 UDID 之后,往往 Xcode 这边不会及时同步信息,提供一个解决办法: 去 ~/Library...
在展示 app 启动广告等情况下,我们可能需要在界面上叠加一个 UIWindow,但是实测情况下发现,由于 UIWindow 会被系统引用导致延迟释放,在 customWindow 实例被使用完之后,单纯 customWindow.
01 - app 的第一个执行代码的机会是什么 新建工程的时候,Xcode 默认创建的 AppDelegate 文件里面会有 UIApplicationDelegate 的 6 个代理方法,其中第一个是 application:didFinishLau...
问题一:为什么有错误处理还要返回值? NSFileManager 里面有这样一个方法: - (BOOL)removeItemAtURL:(NSURL *)URL error:(NSError **)error; 使用的时候我们会传入一个 &error...
当需要实现类似“轮询”这种操作的时候,我们可能会希望有一个“被放缓了的” for 循环 —— 即当某次操作执行后,稍等一下再去执行下一次操作。这时有几种方法可以供我们使用,来实现这种效果,下面对比总结一下。
背景 拿到一个视频的 url 地址(无论是远程还是本地),有时候在播放之前需要检测该视频是否可以播放(本地可能是文件损坏,远端地址情况更复杂),下面介绍两种适用不同情况的方法来实现。
当开发项目有可能进行图片的缓存、清理操作时,我们可能会需要手动去 app 的沙盒里面删除、替换一些内容来进行测试,但是通过代码去目录下查找文件可能不是很方便,也不够直观,这里提供一个方法来方便这个调试过程,使用工具:iMazing + Chrome 使用 iMazing 软件,通过 WiFi 或者 USB 将 iOS 设备连接到电脑之后,可以看到如下这样的界面。
机缘巧合,近距离接触了一个比较坑的外包团队,长了一丢丢扯皮的经验,写个小结,填坑。 了解对方开发情况 提前申请好 fabric、Bugly 等集成监控工具的账号,让对方开发过程中全程都集成这些工具,develop 版本和 release 版本用不同的 id,这样可以区分出 Bugly 中显示的崩溃是 release 版本中影响用户体验的 bug,还是开发过程中程序员为了测试故意触发的 crash。
iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个: func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Void)? = nil) 这是官方文档,但是你还需要在 info.plist 里面填一些东西才能让它起作用,这部分官方注释内容在这里。
写这篇文章的起因是要更新 app ,然而上传 ipa 文件到 iTunes Connect 时发现体积巨大,是 App Store 显示的体积的好几倍,于是仔细研究了一下,各种体积的文件都是些什么。
前言 这是对 Swift 布局框架 SnapKit 的源码的一点分析,尝试搞清,一个好的布局框架,背后都做了些什么。 介绍 SnapKit 中的一些类 ConstraintView 等同于 UIView ConstraintAttributes 用于构造约束关系的各种元素(上下左右等) ConstraintDescription 包含了包括 ConstraintAttributes 在内的各种与约束有关的元素,一个 ConstraintDescription 实例,就可以提供与一种约束有关的所有内容。
鉴于现在大部分 iOS 常用库都还是用 OC 实现的,我们常常需要用到一个叫做 Bridging-Header.h 的东西来在 Swift 项目中使用 OC 实现的框架,当然前提是在这个项目里我们不能或者不想使用 Cocoapods 或 Carthage。
使用 storyboard 的时候,我们经常会写出下面这样的代码,用来跳转到其他页面 if let editVC = self.storyboard?.instantiateViewController(withIdentifier: "EditVC") as? EditVC { self.
与往常一样,张两万先生率队迎战洛杉矶湖人队 与往常一样,张两万先生打满了 48 分钟 与稀松平常的胜利不同,比赛被拖进了加时 与稀松平常的绝杀不同,加时,又有了加时,又有了加时 与往常一样,张两万先生率队取得了胜利,151:147 与往常不同,张两万先...
Paste_Image.png 如图有一个 TableView,每行显示这一行是第几行,现在我希望每按一次 update 按钮,就动态地在下方加两行。
ScreenShot 如图,做了一个四列的 UIPickerView,可以滑动选择精确到街道的中国行政区划信息,并返回地址,使用简单,直接像平时使用 UIPickerView 一样,设置好 frame,添加进父视图就好了。
面试被问过两次了的一个问题,记录一下:假如一个 UIView(我们称作 FatherView),有一个 subview(我们称作 ChildView),这个 ChildView 在 FatherView 的 frame 外部,那么默认情况下,这个 Ch...
自从知道了 guard let 这种写法之后,我就几乎换掉了所有 if let 写法。但今天要提醒一下,使用 guard let 之前,需要先思考一下,因为这并不总是万全的解放方案。
撰写本文时,Weex 还没有完全开源,这是官方的文档中心,这是 Weex 团队放在 Github 上的一些文章,你可以上官网申请访问 Weex 的 Github 页面。
Controller 传值 控制器之间经常需要互相传递值,第一个控制器(简称 MasterVC)在通过 NavigationController Push 第二个控制器(简称 DetailVC)的时候,可以捕获到 DetailVC,所以可以设定后者的变量。
之前看了 Ray Wenderlich 的一篇文章 学习了一下怎么把 UISearchBar 放在 UITableView 的头部,来进行列表搜索,然后发现了两个问题,用了好久才解决: UISearchBar 有个 1 像素宽的黑色边框,去不掉 把 ...
Swift 的语言特性使得它非常适合被用于以函数式编程思想,如果你还没开始用函数式的方式来使用它,那么可以从现在开始,尝试着利用函数式的便利性。 let indicateView = UIImageView(frame: view.frame) indicateView.image = UIImage(named: "how2use") self.view.addSubview(indicateView) 我刚刚写了上面这段代码,来让我的当前页面显示名为 “how2use” 的这张图片。
本文从 setNeedsLayout 这个方法说起,分享与其相关的 UIKit 视图交互、使用场景等内容。 UIKit 为 UIView 提供了这些方法来进行视图的更新与重绘: public func setNeedsLayout() public f...
先来捋一捋思路,关于各个岗位合作打造(移动端)产品的一点想法: 为什么只有程序员是不够的 如何做一个好的非程序员 声明: 本人是程序员,截止到目前,我用的设计都是自己设计的,我用的产品策略都是自己的思考。
前言 最近在重构一个以前写的老项目,在尝试给之前的 ViewController 减负,尽量抽离代码到其他文件。 想记录一些东西,看看以后返回来再看能不能有更好的想法;而现在,可以作为一个检验当前代码是否需要优化的一个标准。
在和腾讯、阿里各通了4次电话之后,翘掉了腾讯的最后一面(因为是在隔壁的城市,而且是群面,心理上有点抗拒),拿到了阿里无线事业部的 offer,个人还是很满意,反过来记录一下整个过程,分享一下。
写在前面 关于 Method Swizzling 这个东西,已经有很多高人写了详细的文章来介绍,我就不再班门弄斧,往深了说了。 而且不作延伸的话,这项技术本身也没有复杂到要长文论述的地步。
iOS 客户端开发的三面。 这次的面试官,一听他说话,年纪就不小了,感觉差不多也是个全栈。他问的 iOS 相关的问题我 90% 都答上来了,提到操作系统、计算机网络、算法之类的,我直说因为长期不投入实用,都忘了,他就说那就不问这方面的了,最后还劝告说,...
这个东西不是我写的,出自 StackOverFlow,但我觉得实在是写得太好了,于是截取了该部分分享出来,感谢原作者。 StackOverFlow
写这篇文章的时候我已经接到阿里的两个电话了,只是因为可能他们安排的面试轮次比较多,所以打一次电话并没能说太多东西,攒了两次一起写。 第一轮 打了不到十分钟就结束了。
写在前面 本人在学了一年半平面设计之后(苦于不会画画,只会用软件,没做出个啥东西来),转做的 iOS 开发,算是能写点新手教程,如果您是职业设计师,就别对这篇文章抱太大希望啦。
继上一篇文章【面试】腾讯 iOS 开发实习电话面试记录(一)后,又接到了第二个电话,继续记录。根据回忆写的,问题先后可能不对。 (一开始让我自我介绍一下,这一介绍,就说了我基本在用 Swift 而不是 OC 写正式项目,然后他就开始偏重 Swift 来...
OnePunchColor.gif 这是 Github 项目地址 我从《一拳超人》动画中吸取了22种和白色非常匹配的颜色,现在你可以通过 UIColor 或者 UIView 来通过一行代码调用这些颜色。
iOS 9 中的 SFSafariViewController 可以使我们非常方便的传入一个 url 来展示一个网页,调用起来是下面这样: let safari = SFSafariViewController(URL: url) self.presentViewController(safari, animated: true, completion: nil) 这里我尝试给出一个简化版(仅仅展示网页,没有其他功能)的 SFSafariViewController,来方便地在 iOS 9 以下的系统中调用。
今天碰到这样一个场景,我需要一个仅仅用来展示网页的页面,那么在 iOS 9 中,我可以使用 SFSafariViewController,而在 iOS 8 及之前版本中,我会使用一个 WebView 来占据整个视图空间,来做这件事。
我用 Javascript 抓取了 SwiftGG 网站,做了一个简易的客户端,方便大家查看上面的文章。 这是 Github 地址,欢迎大家随手 Star。
目前大三,准备暑假去腾讯做 iOS 开发实习,昨天接到了电话面试,(应该是那个部门的 iOS 开发组组长打来的,我也不确定),来分享一下他问的那些题目。 感觉他提问是按照我写的简历来问的,而且考虑到我是准备去做实习生,也可能问的相对简单,我根据回忆写一下,大家就凑合着看吧。
平时我们经常会采用 NSUserDefaults 或者 Plist 来存储数据到设备,这样即使 App 被关闭,下次再打开的时候数据还在。这里我写了两个函数来供大家使用,一个用来存数据,一个用来读数据。
在被 App Store Review 拒绝了一次之后,我的一款 Today Widget App 上线了,把过程中遇到的坑分享出来。 1. 主 App 中要有内容 第一次提交 App 时,只是在 Widget 中添加了内容,主 App 中仅有教用户如何添加插件的几张图片做教程,被拒绝上架了。
在这篇文章中介绍一下,在 App 已经做完之后,到出现在 App Store 之前这段时间,可能需要了解的知识和会用到的技巧。 App 审核委员会 这个团队的工作,是审核一款 App 是否可以在 AppStore 上架。
在开发的过程中,如果我们需要给用户提供一个浏览器功能的支持、又或者需要让用户来从系统相册挑选图片,那么利用 UIKit 给我们提供的现成的 SFSafariViewController 和 UIImagePickerController 将是非常方便的...
本文介绍在 Swift 中 使用 KVO 时,一些需要注意的事项,下面截取了两段我自己在项目中使用的代码。 self.timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval, target...
�Extension Target 如果我们要开发一款类似 AdBlock 的应用,就需要添加一个 Extension Target,如上图。
看着像bug的情况 正常情况 注意第一幅图,『收藏』Tab按钮和右上角的『垃圾桶』按钮,是灰色的(本应该是白色的)。 出现这种情况,没有任何代码的问题 (除非你故意把它设置成灰色)。
App Screen Shot.png 如图,是个很简明的 UITabBarController 分出3个 UINavigationController,每个 UINavigationController 再跟一个 UITableViewController 的结构。
SlowPickerView 【Github】https://github.com/OpenMarshall/SlowPickerView 如上面的 GIF 所示,如果你要开发一款有统计功能的App(比如带计步器功能的),比如用户今天走了 7000 步,那么你可能需要一个数字增长动画来让数字从 0 慢慢滚动到 7000。