一个“开发人员”的故事或新手如何编写iOS应用程序的故事



因此,2018年5月。 在7年中进行了7次尝试来开始为iOS编程。 而且每次都一样:Objective-C让人感到恐惧和不可理解,那么就没有想法了。 然后通常每年一次的Hello World,一切都没有发生...

这次,为我提供了新的Xcode和新语言Swift……还有一个新的主意,我想为我的Zabbix服务器推送通知。 没有正式的库存,那时没有客户...

在此之前,该漫游器向该推送程序发送了一个pushgram,但是它开始变得垃圾,Roskomnadzor及时赶到了。...阻止购物车没有特殊作用,因为 有Mikrotik,它立即被“修复”。

决定编写一个Zabbix通知,然后将其不仅用于通知。

事实证明,仅抛出通知是行不通的。 您需要编写一个应用程序,进行安装,从中获取令牌,提升服务器来发送推送通知...

编程经验仅限于PHP。 Swift有所不同,但当时看起来不像Objective-C那样令人生畏。 Xcode本身也很不错,因为它是将代码从旧代码转换为新代码并发出提示的IDE。

首先,培训视频,学习Zabbix API本身。 但是随后,另一篇文章讨论了NSURLSession的工作原理,存在的框架。

第一个版本只能登录Zabbix服务器并提供触发器和主机。 然后添加图形,值等的视图。

我将详细介绍在编写应用程序时遇到的一些问题。

构架


框架没有进入。 它们“很酷”,很舒适,但是由于某些更改,我不想稍后修复该项目。 这已经发生了。 对于我自己,我决定不使用它们,最好是发明我的自行车以了解一切的工作原理。 对于JSON请求,有Alamofire,但我使用内置的NSURLSession,因为 足以应付一切。

测验


当我决定添加测试时,已经过去了一年多了:)
我以为这件引人入胜的事情将拯救世界……但是……我写了几项不同的测试,在这里戳了一下……懒惰来了。 在如此小的项目中,到目前为止,我看不到为测试分配大量时间的任务……这只是代码测试的时间,更不用说UI测试了。

图片

加密方式


加密有几点。

苹果公司希望其手册中的所有请求都必须加密。 没错。 但是,正如实践所示,并非所有人都希望为自己的Zabbix做https。 一开始,我没有(App Transport Security设置)选项允许纯http流量访问,为此我在AppStore的评论中被钉死在十字架上。 直到我重新创建了整个Info.plist文件,Xcode才意识到我的行。

另外,Apple想了解有关您的应用程序的所有信息,通常的https流量不属于此范围。 但是,如果您想“以棘手的方式”加密某些内容,请向美国当局报告。

图片

与应用程序的一个用户通信时,存在对端到端PUSH消息加密的请求。 该消息必须在Zabbix服务器上加密,并且只能在电话上解密。 对于这种情况,Apple具有“可变”通知。 即 如果“可变内容”已经到来,那么在推送中,您需要根据编写的内容进行更改。 我让它解密邮件。

Apple的此处政策并不反对使用标准加密类型。 您是否想要我上面写的东西给我一张纸并且可以给我看钥匙?...

我使用了内置的CommonCrypto库,因此这被视为加密的标准类型。 我不得不弄乱代码,因为 大多数示例要么非常过时,要么Xcode大喊它不安全,无法直接处理字节和数据,或者对IV OpenSSL玩得很开心-a,偏移量不合适,然后其他事情不正确。 结果,可以制作非脏话的代码,并在加密消息时与OpenSSL一起正常工作。

短路


对我来说,最激动人心的话题是……我无法编写异步代码……。 到目前为止,至少我还不太了解这些闭包的工作方式。

图片

默认情况下,NSURLSession只是异步的,我以后不知道如何使用它……我用DispatchSemaphore使代码同步……自然,有很多用户抱怨说它崩溃了并且崩溃了……

然后同样,它让我想到了电路中的工作原理,工作原理,NSURLSession中的超时以及什么。 该代码已完全替换为普通代码,并添加了错误处理程序。 生活变得更好,生活变得更加有趣。

布局图




是的,我将所有内容都放在一个情节提要中。 我知道这不是很好,但是到目前为止,屏幕很少。 也许以后再把它放进Xibs中。

iOS 13对屏幕显示进行了更改。 以前,所有新屏幕都显示为PUSH,即 全屏。 现在可以下拉此屏幕,它将关闭。

通常,单击“注销”会出现一个错误,您可以简单地将登录表单折叠回去。 这仅在最后一个Xcode组装11时发生。只需将view选项设置为仅以全屏显示,即可对其进行更正。

同样在iOS 13中,出现了SwiftUI,但是如果您现在重做该应用程序,则意味着忘记了那些在具有旧固件的旧设备上使用该应用程序的人...

AppStore布局


尽管我为自己编写了应用程序,但是我还是决定将其发布到AppStore中。 每年只需支付$ 100并进行规划。 事实仍然是检查应用程序,解释为什么要使用该应用程序,等等。

因为 Zabbix的应用程序,在徽标上,我想使用一些有关Zabbix的内容。 但是它不在那里。 我给Zabbix写了一封信,询问可以使用字母Z的形状...但是不能。 因此,我画了我的图标(倾斜的曲线,但是我的)

金融学


该应用程序已使用近2年。 仅花费200美元就可以在AppStore中拥有该应用程序。 除了开发和推送服务器。

图片
该应用程序有一个来自Google的广告...带来了... ... $ 5
停用广告带来了$ 88 ...但是取款门槛是$ 150。
然后,一旦达到提款额度,我通常会删除广告。

推送服务器


是的,是的,一切对他来说都开始了。 一旦完成,您就可以加密加密,许多都切换到加密。

有2个服务器,莫斯科和荷兰,每天2卢布。 DNS平衡,Nginx c让我们加密,使用PHP脚本进行接收和发送。

最初,亚马逊上有一个免费服务器(15兆的流量...),但是随着时间的推移,我买了一个VPS-ku搬到那里。 而且我发现DDOS即将进入托管服务提供商的状态,而vps在12小时内不可用... 2卢布,我想要更多。 好吧,我仍然在亚马逊上,它还没有影响到我。 因此,另一人每天要花2卢布,但在另一个地点。 至少具有一定的容错能力和15 GB的流量... Amazon流量的主要问题,微型ddos,您就可以赚钱。

我想将Cloudflare用作平衡器,但他们希望将整个域的委派给他们,而不是委派给该域。

一些统计


总共将近6000次下载。 巴西位居榜首...

图片

结论


  • 斯威夫特就是这样)
  • 在现代世界中,大量的文章和IDE的便利性使您可以快速开始。
  • 该应用程序最初是为我自己编写的,但事实证明,这是一个很好的开发经验,并在AppStore中进行了正面和负面的评价。
  • 发展可以很好地清洁大脑。
  • 最好阅读扩展坞,而不要与异步代码进行同步:)
  • 一般写,复制,学习。 只有这样,才能在实践中理解什么是什么。
  • *与用户进行更多交流,他们肯定会说出他们为什么需要它以及如何看待它。 我完全根据用户的意愿在应用程序中添加了三分之一的功能。

Source: https://habr.com/ru/post/zh-CN469387/


All Articles