《爱上跑步的13周》专属App软件

《爱上跑步的13周》提供了完整的13周跑步训练计划。该计划核心在于循序渐进地提升运动量,在避免运动受伤的前提下,用13周让几乎任何体能状况的人完成自己的10公里跑。

心动不如行动。

但实际行动起来,却发现要完全跟随计划有点困难,因为这套训练计划的核心是跑步与走路相结合。我们需要知道什么时候该跑步,什么时候该走路。

《爱跑十三周》这个工具型app就是为此而生。

《爱跑十三周》的主要功能如下:

我的App审核简史

两款应用终于过审了。记录下过程,以备参考。

先交代下两款应用的背景:

应用一:爱跑十三周,跑步应用,本地化为3种语言,没有开关隐藏、热更、第三方支付等常见违规问题;

应用二:魔板拼图,解谜游戏应用,本地化为3种语言,没有开关隐藏、热更、第三方支付等常见违规问题。

数字华容道怎样才能有解

数字华容道,是在4x4的格子中,依次从左到右,从上到下放置1-15这15个数字。经过一定的随机,必须将这15个数字复原。每个数字只能向相邻的唯一空格移动。难度更高的,格子和数字会更多,比如5x5。

我在开发一个类数字华容道游戏时,发现自己3x3的格子,居然怎么都解不出来。比如:一排1、2、3,二排4、5、6,三排8,7。经过网上查询,才知道完全随机位置的数值华容道仅有50%的概率是有解的。而我就是用的完全随机方式去打乱次序。

网上有两篇文章说的很好,以下是根据这两篇文章的总结。

数字华容道必然有解的前提

首先,要弄清楚一个概念:逆序数。逆序数,即一个数字序列,将其中所有数字依次两两对比,若大数在前,小数在后,那么这就是一对逆序数。这里说到的逆序数,指的是数字序列中逆序数的数量。比如:上文提到的1、2、3、4、5、6、8、7,逆序数只有1个,即8和7。

I made an app

我的第一个App终于提审了。

从2015年开始,我就念叨着要做一个App;而2016和2017年的年度目标之一就是上架一个App。但直到现在,2018年,我才真正完成我的第一款App。

iOS工程的本地化-Swift

应用如果需要根据设备语言显示不同的语言,就需要进行本地化的工作。就iOS工程而言,需要本地化的内容主要有:文字、图片、语音。一般而言,图片和语言的本地化,都可以转化为实质上的字符串的本地化。

  • info.plist本地化
  • 代码字符串本地化
  • storyboard, xib文件本地化
  • launchScreen.storyboard本地化
  • 图片本地化
  • 一次性导出本地化文件
  • 新增内容的本地化
  • 多人协作下使用自定义Localizable.strings文件

仿照微信WebView实现ProgressBar

两种进度条逻辑

在网页中,一般我们会用顶部进度条来表示当前网页加载的进度。这里最常见的就是像Safari或Chrome浏览器那样的,用真实的进度百分比来更新进度条。当网速较慢时,进度条几乎完全不动;当网速较快时,进度条则会从大约20%位置嗖一下快速变为100%。

还有一种,就是微信App里的网页加载进度条。这里的进度条反映的不是真实的加载进度,其设计初衷应该就是让网页加载『看起来』更快。经过观察,大约是这样的一个逻辑:

苹果内购接入的坑与核心流程 - Swift

通过苹果开发文档、搜索与挣扎摸索,我已经在App上实现了【消耗型商品】的内购。总结流程如下:

  1. 完成必须的准备工作
  2. 用有效的商品id创建SKProductRequest请求苹果服务器返回商品(SKProduct)。
  3. 用返回的有效的商品创建payment,并将payment加入苹果的支付队列。
  4. 监听队列,并根据监听到的交易状态进行适当的处理,尤其需要在交易完毕时关闭交易。

自学路上的坑01 - Scheme勾选项带来的一些列问题

如果你的问题在网上找不到,那一定是你犯了一个低级错误。

结论

Edit Scheme中勾选Malloc Stack会导致每次Xcode覆盖安装App都预先占用一定量的数据存储空间,且由于某种原因,本来每次存储几十KB的数据结果占用了几十MB;同时,这个勾选项还会导致Instrument - Leak界面出现名为<Allocated Prior To Attach>的Leak。

Edit SchemeZombie Object调试结束要记得关掉,否则会在Instrument - Leak界面产生大量的名为Zombie Object的Leak。

自学编程6年,从入门到放弃

我会用4种编程语言写出Hello World!

2013年 C语言

自学编程的想法,最早应该可以追溯到2013年,证据就是我于当时写下的博客,以及博客中提到的新买的、后来被村长带走的《C语言编程》。我已经记不得当时为何要学编程,为何要从C语言开始,以及那本书我看了多少。

不过,打出上面最后一句话后,我还是想起来了:当时我没能用C语言打出Hello World!就放弃了,因为没弄好编译器。