The gist of the updates to the MyAppSales codebase for version 1.0.7 where related to improving performance and lay the groundwork to be able to add new features or rewrite current ones with the least impact. For example I added a method that allows me to dynamically upgrade the DB schema from all previous versions to the current one without losing data. This way I can add new tables to existing databases.
Also I added an AccountManager class which allows me to enumerate and deal with multiple accounts. Currently only the first you set up is checked, until I can figure out a safe way to prevent duplicates or wrongfully detected report duplicates from multiple accounts. I am thinking of doing sort of finger-printing letting the app figure out which apps belong to the same account. Something smart like this is necessary because a user is at liberty to delete an ITC account and also a future import mechanism will be FTP and there you also don’t know which account those files are from.
There where so many little changes that I simply did not want to wait any more to tell you what’s been going on there. So please be easy on me regarding unfinished features. It’s coming, be patient grasshopper!
- ADDED: Experimental support for monthly (financial) reports. Manual import only.
- ADDED: Possibility to lock MyAppSales with a passcode (aka PIN)
- CHANGED: Ssettings are now saved in NSUserDefaults as opposed to a plist in the app’s doc dir
- CHANGED: Split the database code and the iTunes Connect code into discrete classes in preparation for future multiple data sources
- CHANGED: Replaced keychain wrapper with new custom AccountManager class that allows me to enumerate over accounts in preparation for future additional data sources like multiple ITC accounts as well as applyzer, admob et al.
- FIXED: The lower part of the cancel button behind “Empty Cache” was irresponsive
- ADDED: Smart detection of iTunes Connect downtime due to maintenance
- ADDED: now the iTunes Connect cookies are checked to see if a login was successfully as opposed to scraping
- FIXED: Login failing after clearing the cache
- CHANGED: It is no longer possible to combine multiple reports into a single text file for import. The first line of a report is used to determine the report type and dates for the whole file.
If you have a large database and use the passcode lock you might experience a second or so delay right after program start when entering the code. This is normal, and caused by summing app totals being done right after app start. I’ll have to move this to a background process eventually.
If you have multiple old text files to import it is best to feed them in original format to MyAppSales. Should you have several reports mixed into one, here’s a quick shell script that splits those into multiple files and zips them for single-file-importing:
# Usage: ./split.sh single_text_file.txt cat $1 | cut -f13 | grep / |sort -u > days.txt for I in `cat days.txt` do NAME=`echo $I | sed -e "s/\//-/g"` echo "FILE: $NAME"; head -1 $1 > $NAME.txt cat test.txt | grep $I | sort -u >> $NAME.txt echo $I done zip import_me.zip *-*-*.txt
I have begun to tag the releases on the svn repo. In the trunk you will always find my latest experiments. If you want to get stable code you can now get that from the tags folder.
To summarize: In this release you will find a little bit of eyecandy. But I am proud of the passcode locking feature which has only been requested last week and now it’s already implemented. (Honestly I needed it for another project, speaking of reusable code). I am excited to be approaching a state of the code where I can think of adding data from Applyzer, advertisement reports from AdMob or simple add reviews.
Please let me know what you think by either commenting here or raising a
bug report feature request at http://www.drobnik.com/bugs