Sep 23, 2009
This new version, on which I’ve literally been working every free minute in the past week, completes the featureset to make reviews useful for people of all languages because it introduces automatic background translations to a language of your choice. And finally you now find full support for automatic downloading Monthly Free and Monthly Financial reports.
- ADDED: Background processing of review texts with optional language translation.
- ADDED: New setting to choose target language or no translation.
- ADDED: If you change target language you get the option of deleting previous translations and redo them for the new language.
- ADDED: Downloading of Monthly Free reports which complement the financial reports showing downloads of free apps.
- ADDED: Downloading of Monthly Financial reports
- FIXED: Flag would not show if there was no sale in last 7 days.
- FIXED: Many other small bugs related to reviews, translations or financial reports.
- CHANGED: Apple uses 50 pixel country flags now, changed code to get flags of new stores from new URL
- CHANGED: Revamped duplicate checking code to be more robust.
There is a known issue with the new downloading pipeline which is actually Apple’s problem. It seems that under some circumstances (too much load?) their ITC website does not properly pass on credential cookies to ITTS which is where the daily and weekly reports are hosted. So every once in a while you might get a red message stating that an unrecognized response was received. This is due to the fact that ITTS is sending an HTML page stating that the session has expired when it actually just has started. The present workaround is to simply hit the refresh button on the reports page, the second time it generally works.
As usual you can get these updates via SVN, it’s tagged as well as the current contents of trunk. And of course I am still happy to receive your donations if you think I am doing a good job maintaining and improving MyAppSales.
Sep 15, 2009
If you’re scratching your head, thinking to yourself “didn’t I just see a new version just 5 days ago?” then you are absolutely right. There really was a new version that recently. But that did not prevent me from going into overdrive and burn much midnight oil to get the next release out.
Buckle up, this is “The Review Release”!
- ADDED: Tapping on a row on the apps tab now shows the reviews sorted chronologically, new reviews have a red headline
- FIXED: A bug would cause a chart to hang if the user had sales in excess of a couple of thousand dollars per day or week. Yes, there are really such iPhone Developers who make boatloads of money and they use MyAppSales.
- CHANGED: Added compiler directive to prevent trying to build the project below SDK 3.0. I figure you are all developers out there and no serious developer would still have his iPhone on an OS below 3.0.
- CHANGED: The iTunes Connect downloading pipeline is now an NSOperation using synchronous calls. Added a ton of additional error catching code.
- ADDED: Buttons on the review screen to directly page to the previous or next report of the same type.
- ADDED: A multi-threaded review scraping engine which is also based on NSOperation. This is amazingly fast compared to competing engines, and all running completely on a background thread. So this can run while you are checking the new daily report.
- ADDED: Settings to allow enabling of review downloading and setting of the interval.
- ADDED: Badges on the app icons show the existence of new reviews.
- CHANGED: your database will be upgraded to schema version 3 with new tables for the review stuff.
- FIXED: The sync button on the review page is now properly disabled when the sync manager is active.
- ADDED: Monthly Free reports now get downloaded as well.
- Financial reports are still experimental and thus don’t get downloaded automatically. Sometimes they are labelled incorrectly and there are lots of other unsolved problems. Check the bug tracker to find out which.
- Sums are generated every time after there are new exchange rates or new reports. This might cause short periods of lagging.
As usual, before you upgrade, please make a backup of your apps.db. The upgrade should be straightforward, but it never hurts to have a backup. 😉
The release is tagged in /tags/release-1.0.8 and you may checkout this exact version either from the terminal or via XCode. Or you can simply “Update Entire Project” in XCode’s SCM Menu provided that you have linked your working copy with the repo.
If you have not donated yet to keep me improving MyAppSales, then please do so now to get access to this fabulous update. If you already did, you are welcome to show your continued appreciation by another small donation.
Sep 10, 2009
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`
NAME=`echo $I | sed -e "s/\//-/g"`
echo "FILE: $NAME";
head -1 $1 > $NAME.txt
cat test.txt | grep $I | sort -u >> $NAME.txt
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
Aug 24, 2009
There has long been an open feature request for MyAppSales on the Mantis Bug Tracker for displaying a sum total of units sold and royalties earned. Until now I had thought that I would have to rearchitect the way I am calculating sums, but it turns out that a simple SQL statement is fast enough even with almost a year worth of data in the SQLite database.
And while I was at it, I also made some additional useful additions and some visual changes.
- CHANGED: Look of Apps page changed to be closer to AppStore app
- ADDED: Royalties earned so far and Units sold (coming from Daily Reports)
- ADDED: Sums are being recalculated when there are new currency exchange rates and after sync
- ADDED: Smart Auto-Sync. When started the app only communicates with iTunes Connect if there has not been a new report downloaded today.
- ADDED: “Empty Cache” button on Settings page removes cached app icons, chart cache and other temp files that might have gotten left over in document directory. This also causes the app names to be reloaded from iTunes.
As usual you can update your source code directly from the Subversion repo.
Aug 17, 2009
First day back from vacation I chose an easy thing to do to get back into the saddle. Nothing too complicated because I don’t want to relapse into needing another vacation right away. I fixed a bug in MyAppSales and
bragged blogged about it. This formal release contains these updates:
- CHANGE: All __MyCompanyName__ now changed to drobnik.com
- FIXED: Login problems after Apple updated iTunes Connect (quick-fixed previously)
- FIXED: Password not getting properly URLencoded
The last part is especially necessary for you if you have a plus sign or other characters in your password which are not safe in URLs. If you previously experienced such problems please accept my apologies if you managed to lock your iTunes account. This update should fix this problem for you.
The changes which had been necessary to deal with Apple’s update for iTunes Connect had previously been in the repository but now they have a formal version number. As usual you can update your copy from the SVN customer-only repository.
Jul 31, 2009
On the very first day of my vacation Apple updated the iTunes Connect site breaking all existing report downloaders.
My hero is Lukas Matablewski who figured out the necessary changes. Stefan Sorin Nicolin, who is hosting the MyAppSales svn repo commited the changes to the trunk. So please update your working copy now.
All of this while I am in a beautiful NO SIGNAL region of Austria…
May 19, 2009
I woke up early and was looking for something useful to do with this extra time that would not take too much brain power. This minor update to MyAppSales addresses a pressing issue and some internal cosmetics.
- Before this fix the local timezone would be used when interpreting a report date. This could lead to unexpected behavior when travelling and synching reports in an earlier timezone. Now all report dates are interpreted as from timezone “America/Los_Angeles”, which is the timezone of Apple in Cupertino.
- Cleaned up code of iTunes Connector class as a result of making the exchange rate class a shared instance, ordered the functions therein in a more logical way and added section titles for clarification.
- Now for finding out if a report already was downloaded only the date and type is used. Before this change also time was used but this would change with different local timezones causing duplicate entries.
Refresh your copy from the customer-only SVN to get this update.
UPDATE: WAIT with updating if you have previously existing entries!!! You will get duplicate entries. (see third fix above. Let me know if you need help cleaning up duplicate entries from your database)
May 04, 2009
Two minor fixes make out version 1.0.3 of MyAppSales.
- Removed all NSLog statements
- Revampted calculation of sums as to make them match with the detail lines
The latter bug was caused by using old currency exchange data to pre-calculate sums but using newer exchange rates for detail lines. This would sometimes cause a difference of a couple of cents which was more than a rounding error. There might still be a difference of one cent but that is because MyAppSales calculates all amounts in floating point without limit of decimal places, but only two rounded decimal places are show on the reports regardless of currency.
Get the new version from the customer-only SVN. UPDATE: I had forgotten to bump the version in info.plist. That’s fixed now.
PS: Dylan Prozenak of AppViz contacted me earlier, regarding my call to action for an open report downloading API:
I had contacted Apple directly about this a while ago and received a reply indicating that they were looking at it. I just filed a bug report as suggested. Probably should have done that first thing.
Hopefully it will make a difference; I’d love to make an AppViz for the App Store and hearing both your story and some friends of mine who developed a similar product makes me shudder. I know how much time goes into these things and then not being able to sell it is like getting slapped in the face; particularly since there seem to be a couple that made it in. Competition can only be good for this space; it keeps us all on our toes and innovating.
Apr 27, 2009
This update of MyAppSales brings two cosmetic fixes plus on fix for a bug that I accidentially introduced in 1.0.1.
- Added UTF-8 encoding header for import/export web server
- Reduced tab bar icons in size, removed text from the splash screen
- Fixed: On the reports root table the icons would not reflect that there are new reports in the daily/weekly category.
The last one was embarrassing enough to immediately release this version. I am updating the icons from an app-wide notification, but I did not consider that notifications only work if the Nib has already been loaded.
The new version can be checked out from the customer-only SVN.