AppViz - For those who hate iTunes connect

Discussion in 'iOS Development' started by Chicken, Jun 29, 2009.

  1. Chicken

    Chicken Retired Moderator

    Joined:
    Feb 17, 2008
    Messages:
    2,494
    Likes Received:
    7
    Device:
    iPhone 5S
    OK so recently I came across an application called AppViz by IdeaSwarm
    http://www.ideaswarm.com/products/appviz/

    As you can see from the list of features, AppViz lets you easily download and view your daily, weekly and monthly reports with a click of a button.

    You can view this reports in a bar graph, a scatter graph. You can also view in a geographical pie chart.

    It is also able to download reviews from the iTunes store so you can see what customers think of your application.

    Please Register or Log in to view images


    Please Register or Log in to view images


    Please Register or Log in to view images



    I recommend you go buy this app, it's $29.95
    I personally hate the way iTunes connect displays things and organizes them, but that’s just my opinion.

    Go check it out there is a 30 day free trial as well.
  2. SkylarEC

    SkylarEC Super Moderator Emeritus Staff Member

    Joined:
    Sep 19, 2007
    Messages:
    6,642
    Likes Received:
    129
    Yeah, wow. That sounds like a great idea. I'm totally gonna give all my iTunes Connect information to a completely unknown company. What could possibly go wrong with giving them access to something that has my tax information and bank accounts and whatnot.


    For future reference, the reports Apple give out are designed to be opened up in excel.
  3. SmexyPenguin18

    SmexyPenguin18 Active Member

    Joined:
    Dec 27, 2007
    Messages:
    1,749
    Likes Received:
    0
    Device:
    3G iPod touch
    lol whats itunes connect anyway?
  4. Steaps

    Steaps New Member

    Joined:
    Oct 24, 2007
    Messages:
    5,074
    Likes Received:
    41
    Device:
    iPod touch
    It's used for giving the iPhone developers their sales reports and what not from the App Store.

    Could you seriously not guess that from the post?
  5. SmexyPenguin18

    SmexyPenguin18 Active Member

    Joined:
    Dec 27, 2007
    Messages:
    1,749
    Likes Received:
    0
    Device:
    3G iPod touch
    no i guess i really wasnt paying attention lol
  6. Cyanidepoison

    Cyanidepoison Active Member

    Joined:
    Jan 18, 2008
    Messages:
    1,076
    Likes Received:
    2
    While that probably works (I haven't tried), someone with the handle "kroo" I know on an IRC chan wrote this script:
    Code:
    import glob, urllib2
    
    total_units_sold = 0
    countries = {}
    currencies = {}
    dates = {}
    for filename in glob.glob("*.txt"):
      f = open(filename)
      header = f.readline()
      # print filename
      for line in f.readlines():
        cols = filter(lambda x: len(x.strip()) >0,  line.split("\t"))
        # print cols[6] # number of units sold
        total_units_sold = total_units_sold + int(cols[6])
        if cols[11] in countries: countries[cols[11]] += int(cols[6])
        else: countries[cols[11]] = int(cols[6])
    
        if cols[10] in currencies: currencies[cols[10]] += float(cols[6]) * float(cols[7])
        else: currencies[cols[10]] = float(cols[6]) * float(cols[7])
    
        if cols[9] in dates: dates[cols[9]] += int(cols[6])
        else: dates[cols[9]] = int(cols[6])
    
    
    print """
    <html>
    <head>
      <meta http-equiv="Content-type" content="text/html; charset=utf-8">
      <title>Sales Info</title>
    
        <script type='text/javascript' src='http://www.google.com/jsapi'></script>
        <script type='text/javascript'>
         google.load('visualization', '1', {'packages': ['geomap', 'annotatedtimeline']});
         google.setOnLoadCallback(drawMap);
    
          function drawMap() {
    """
    
    def printData(adict, columns):
      row_counter = 0
      keys = adict.keys();
      keys.sort();
      print "var data = new google.visualization.DataTable();"
      print "data.addRows(%d);" % len(adict.keys())
      for column in columns:
        print "data.addColumn('%s', '%s');" % (column[1], column[0])
      for key in keys:
        keytxt = "'%s'" % key
        if columns[0][1] == 'date':
          mon, day, yr = map(int, keytxt[1:-1].split("/"))
          keytxt = "new Date(%d, %d, %d)" % (yr, mon-1, day)
        print "data.setValue(%d, 0, %s);" % (row_counter, keytxt)
        print "data.setValue(%d, 1, %d);" % (row_counter, adict[key])
        row_counter += 1;
    
    printData(countries, [("Country", "string"), ("Units Sold", "number")])
    print """
    var options = {};
    options['dataMode'] = 'regions';
    options['width']    = '800px';
    
    var container = document.getElementById('map_canvas');
    var geomap = new google.visualization.GeoMap(container);
    geomap.draw(data, options);
    """
    print "\n\n\n"
    
    printData(dates, [("Date", "date"), ("Units Sold", "number")])
    print """
    var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
    chart.draw(data, {displayAnnotations: true});
        };
        </script>
    </head>
    
    <body>
      <center>
      <div style="font-size: 24px; font-family: Verdana; color: #333;">Total Sold: %d</div>
    
    """ % total_units_sold
    # print "by country:", "<br>".join(["%s: %d" % (country, countries[country]) for country in countries]);
    # print "<br>currencies:"
    googlesearch = "http://www.google.com/search?q="
    for currency in currencies.keys():
      googlesearch += "%.2f %s + " % (currencies[currency], currency)
    
    googlesearch = googlesearch[:-len(" + ")]
    googlesearch = googlesearch.replace("+", "%2B").replace(" ", "+")
    
    print "<a href=\"" + googlesearch + "\"> Earnings calculation </a><br>"
    
    # datesarray = dates.keys()
    # datesarray.sort();
    # for date in datesarray:
    #   print date, dates[date], "<br>"
    
    print """
        <div id='chart_div' style='width: 90%; height: 240px; margin: 15px;'></div>
        <div id='map_canvas'style=''></div>  
      </center>
      <div class="footer" style="font-size: 12px; font-family: Verdana; color: #CCC; position: fixed; bottom: 3px;  left: 3px;">Copyright (c) 2009, Wings For Cats.</div>
    </body>
    </html>
    """
    

    It takes your iTunes Connect download/sales reports and makes a nice graph and a map of the globe that shows you how many downloads you got from each country, putting darker colors on countries with more downloads. It also does currency conversion and all that stuff.

    Just stick it in a directory with all of your reports and it'll do the rest. It outputs an HTML file with Javascript for the graph and such that you can just open in a browser to get a more graphical view of your numbers.
  7. Chicken

    Chicken Retired Moderator

    Joined:
    Feb 17, 2008
    Messages:
    2,494
    Likes Received:
    7
    Device:
    iPhone 5S
    Say what you will about the company being unknown, but I can guarantee you it doesn't send any data to their servers. You can even check this by using a program called LittleSnitch.
  8. bamhm182

    bamhm182 Member

    Joined:
    Mar 2, 2009
    Messages:
    544
    Likes Received:
    0
    Device:
    3G iPod touch
    Looks nice. I've got a program on my iPod called My App Sales by Oliver Drobnik. I am still waiting for my apps to get out of Apple's review process, but the screenies look nice. It has graphs and Tables for all your applications. It isn't on the App Store, but Oliver is trustworthy and it is only $15 as apposed to the $30 that this company is asking for. If you want to check it out, it is at http://www.drobnik.com/touch

Share This Page