Since starting iOS development on March 15 last year (2015), removing the 3 months in between as full-time stay-at-home dad (part-time O2O photography startup) (May 10 to August 12), to today (June 26, 2016) it’s been a bit over 1 year.
Last November wrote an article 5 Months Summary After Switching from C++ to iOS Development , listed knowledge learned in nearly 5 months, also made some plans.
This article continues from the previous one. Summarizes learning situation in the past 6 months (last December to today).
...
Background
At work I’m responsible for IM feature development, usually do a lot of research and learning on WeChat.
This article mainly focuses on WeChat iOS client interface implementation’s “chat message interface” implementation.
Purpose of writing this article:
Share WeChat’s chat interface implementation method.
Show reverse engineering main process.
PS: Initially was to solve a small issue in the project that I reverse engineered WeChat.
...
Background
Chat interface has two implementation methods:
QQ’s implementation method, also most Apps’ implementation method. Each message type has its own different Cell, for example: TextCell, ImageCell, etc.
WeChat’s implementation method. Currently only know WeChat does it this way. Implementation method see this article.
This article mainly talks about a small UI animation issue that may be encountered with the first implementation method.
There are many reference codes on GitHub using the first implementation method (didn’t find ready-made code for the second), but many codes have minor issues when actually applied.
...
Too many commands to remember during reverse engineering, so organized this cheatsheet, sharing with everyone. I only finished reading the little yellow book “iOS Application Reverse Engineering”, haven’t deeply researched reverse engineering in these months. Recently wanted to reverse a few apps again to learn how they’re implemented, found I forgot many commands. So organized this table. Copy and paste to happily learn other apps’ implementations.
Commands are all basic, simple, common, mainly because I only learned this much.
...
Finally launched the first App, brief summary. For this App, I’m considered “full-stack development”.
Source code first
This development process mainly has two outputs:
Tomato Read App: Curated subscription of some iOS developer blogs. AppStore link.
Blog List: Sorted by last update time. Auto-refreshes daily.
...
Background
Wrote an article last year, which explained how to use the symbolicatecrash tool to symbolicate crash information.
At that time, based on this method, implemented a small system for automatically symbolizing crash information for the company’s product.
After App gets crash information, packages and uploads to company’s crash collection server.
Python script periodically gets crashes, and finds corresponding version’s symbol files on internal Jenkins server.
Finally after symbolization, aggregates into database.
Web for convenient querying, aggregated by module, version, stack, etc. Convenient for finding crash causes and tracking crash trends.
...
Product’s first AppStore review passed, encountered a “magical” bug during New Year, App would crash when displaying certain special characters. Later found the cause after various attempts.
First Layer Cause
A function returned NSString as nil, user didn’t check for nil, causing crash.
Second Layer Cause
Some business database information is not utf-8, but cp936 stored by PC client (database is SQL Server)
Some information iOS gets is cp936 encoded text.
Text contains euro symbol €. (https://en.wikipedia.org/wiki/Euro)
iOS treats cp936 as gb18030 decoding (mainly influenced by gbk to utf-8 conversion, many such articles online)
If cp936 has euro symbol, will return nil.
...
Problem
In the past month or so, QA found that the App frequently has slow startup. And it’s relatively easy to reproduce.
Reproduction system version: iOS 9.3, and install enterprise certificate signed App.
App startup process is generally like this: App icon color will first darken, after darkening the icon appears with zoom effect entering LaunchScreen.
The problem is: First launch of App won’t have lag, when switching to other Apps for a while, then clicking App icon again, stuck at dark icon for 3 to 10 seconds, time varies each time.
See the 51VV icon in the top right, the image below is the dark icon (i.e., stuck at this interface for 3 to 10 seconds):
...
Recently found that my Apple Developer account couldn’t log in at https://developer.apple.com.
Logging in always shows this image:
Later, initially thought it was a company network issue, then tried at home, on colleague’s computer, Chrome, Safari, still didn’t work.
Found online that someone encountered a similar issue, called Apple support and resolved it.
So found the phone number,
Called 4006 701 855, Mandarin service, waited a few minutes, and it was resolved.
Finally, asked if I had any other questions, I said “Can I know the reason?”, they said “Cannot tell you.”
I asked “Will using VPN normally have any impact?”, they said “No impact.”
Alright, resolved.
...