Getting your app accepted in the apple app store

Start your free, no-risk, 4 week trial!

Getting your app accepted in the apple app store

Q: How do I get my app approved for the Apple App store.
A: Easy, just follow the guidelines.

Ok, so obviously it’s harder than it sounds. There are more than one hundred official reasons why your app may be rejected. On the other hand, it’s very similar to Google’s PageRank guidelines, which have been very transparent in the past: just follow the rules and everything will turn out fine.

  1. Follow the guidelines
  2. Submit your app for review

Getting your app approved can be tricky. Opentracker can assist you in this process. We can show you:

  1. what device Apple used to check your app, for example, an iphone or an ipad
  2. what OS version Apple used to test your app
  3. how many and which specific events (swipe, button pressed, etc.) Apple generated to test your app

This information can help you gain insight into the app approval process, specifically regarding how your app is tested, increasing your chances of success.

The process can be frustrating and time-consuming, especially as a lot of the guidelines are meta-points that you should probably take into account in the initial stages of conceiving your app. If you would like to see the guidelines yourself, you will first need to register yourself as an Apple Developer.

Here are a few sample causes for rejection taken from the Functionality section:

  • Apps that crash will be rejected
  • Apps that exhibit bugs will be rejected
  • Apps that browse the web must use the iOS WebKit framework and WebKit Javascript
  • Location data can only be used when directly relevant to the features and services provided by the app to the user or to support approved advertising uses
  • iPhone apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution

Regarding this last point, we have a case study. In this example, the app was submitted for review and rejected.
Here is the event-stream of the engineer at Apple who reviewed the app:

event stream of apple app review

In our case study, the app maker submitted an app which was built for iphone and was rejected because it was not compatible for ipad.

By reviewing the clickstream, the app-maker is able to see that Apple tested the app only once, and only on an ipad. It is also possible to see that the platform/ OS was 5.1.1 and that the engineer generated an event stream with 10 events, including 6 buttons pressed.

So, our app-maker can now benefit by getting an idea of how testing is done; how much time is used, how long before testing occurs after the notification email from apple, and crucially, which specific functionality is tested.

And most importantly, using this insight, the app-maker can test on the correct device and OS in order to ensure everything is working and that the apple tester’s events can be duplicated, for trouble-shooting purposes.

Other blog posts

Start your free, no-risk, 4 week trial!

Beautiful PDFs – 4 of them. An overview of solutions & technology on offer

Start your free, no-risk, 4 week trial!

Beautiful PDFs – 4 of them. An overview of solutions & technology on offer

We have built and published 4 double-sided PDFs that summarize our most recent contributions to the field of website and mobile app tracking.

The four lavishly illustrated PDFs are entitled:

1. Total Engagement: Identify unique user activity from web to app and back again.

A Brave New Solution for a Brave New World. Millions of smartphone and tablet users are joining the mobile web on a daily basis, radically evolving internet behavior.

2. Analyze Behavior: Realtime app usage & event stream analytics

Get results. In order to make the best apps, you need the best data about your app users. Follow app users, event by event – even when offline.

3. Locate & Identify: Follow your mobile users with Geo-Location

Know exactly where your users come from. Access highly detailed demographics at user level. Idenitfy leads- city, state, country – with pinpoint accuracy.

4. Read & Write: Api magic: App & Site user-data reporting

The Opentracker web API can be used to create reports exactly as oyu need and envision; send custom data to our servers, and query the data in realtime.

Here is the link:
https://www.opentracker.net/resources/downloads

NOTE: These 4 PDFs are not to be confused with the more that Twenty Million PDFs that we have converted through our PDFMyURL.com site.

Other blog posts

Start your free, no-risk, 4 week trial!

The Problem We Solve – 1 million apps and growing

Start your free, no-risk, 4 week trial!

The Problem We Solve – 1 million apps and growing

So why build and program more software anyway?

There is a tremendous amount of programming going on in the world. As we saw at The Next Web conference  last week – there is no shortage of inspiration and new ideas. App production is growing exponentially. The challenge is to ensure that the technology we are building actually gets used.

In our case we built mobile app analytics because we identified a problem which we believe we are uniquely positioned to solve.
There are now more than a million apps available, taking andriod and ios into account, with thousands being added on a daily basis.

Q: What is the problem?
A: The problem is that there is a large disconnect between most app-makers and app users. App builders build an app and throw it into the world to sink or swim. A great many apps are downloaded and launched just one time.

We think that the likelihood of success for apps greatly increases when app makers take user behavior into account. So we have taken the first step towards solving that problem by building a real-time reporting interface which shows all user events taking place in an application as they happen. Obviously the reports can then be slice & diced and cut up to suit your needs, but the main point has been stated; usability feedback is crucial to success, and this blog post is officially over.

Other blog posts

Start your free, no-risk, 4 week trial!

Evolution and the Rules of Engagement; from Clicks to Events

Start your free, no-risk, 4 week trial!

Evolution and the Rules of Engagement; from Clicks to Events

Technology and terminology are both changing.

Engagement patterns are changing and so is the way that we measure and report them.

We began ten years ago by measuring page views and the mouse clicks website visitors made between page views. This information is displayed in the form of a clickstream. We are now able to capture a much wider range of activity.

Our technology has expanded to keep pace with engagement patterns across the internet. Alongside clicks and page views, we also capture events. We group events into eventstreams. Alongside visitors we also measure users.

Definition of an event:
for Opentracker, anything can be an event. An event can be a view, swipe, click, pinch, download, ajax call, movie view, etc.

You can now send us custom events; inserting data (events) can be done by submitting the data to our log servers with secure http requests.

Q: What are we actually talking about?

A: We are talking about measurement of traffic, and usage:

  1. html websites
  2. native apps built for iphone (iOS) or Android
  3. web apps meaning sites accessed through mobile devices

We are talking about the ability to access a single report which provides a picture of universal activity, which we call Total Engagement.
An example would be a cross-device or cross-platform launch, and the ability to show advertisers a report with total audience engagement.

Q: What is our goal?
A: Given the importance of understanding user audience and being able to react in a timely fashion, Opentracker’s goal is to provide a realtime solution which is easy to read and reports on Total Engagement across apps and websites.

Click here to access a Features list for Mobile App Analytics.
Click here to access our Brave New Twitter Feed.

Other blog posts

Start your free, no-risk, 4 week trial!

App Analytics – Usability & Definitions

Start your free, no-risk, 4 week trial!

App Analytics – Usability & Definitions

When we say that we have built Mobile App Tracking – that can raise some questions. Definitions are needed.

Q: What is mobile app tracking?
A: Mobile app tracking is combined data from native and web app usage on mobile devices. This means tracking and measurement of app usage. If you build, publish, advertise through or sell apps, you have users, it is important to know how these users make use of your app, and if they are loyal users, meaning retention.

What this amounts to is usability testing. Your app users effectively become testers. Individual profiles mean that you can inspect both one-night-stand installs and loyal users in order to determine what is successful and what is not.

For ten years, we have pioneered real-time website tracking, meaning we show what website users are doing while they do it. Using our knowledge of how to both measure and display real-time data, we now provide this service for apps.

Glossary:

  • Native app: An application developed especially for use on mobile devices, written in a native programing language like Java or Object-C and can be sold throuh app stores like Apple’s Appstore or Google’s App Market.
  • Web app: A site built using standard internet languages. In other words: people accessing websites through mobile devices.

In our next post we will Define and Discuss the change in terminology we have made from website analytics (clickstream tracking and pageviews) to App Analytics, which is the measurement of events, which we display in Eventstreams.

Other blog posts

Start your free, no-risk, 4 week trial!

Opentracker at The Next Web – Mobile App Tracking

Start your free, no-risk, 4 week trial!

Opentracker at The Next Web – Mobile App Tracking

From April 25-27, 2012, the annual Next Web Conference will take place a few hundred meters from our Amsterdam office. The next web has a packed agenda as usual. We’ll be there in person on Thursday 26 April the whole day. We’ve organized a Startup Table in the Business Area.

Why a Startup Table? Because after many months of hard work, we’ve just launched a new service. Our new offering is called Mobile App Analytics.
Our focus is realtime tracking of app users. We display individual Eventstreams and User Trends.

We are going to be on-site with a demo called Openwhacker which you can use to generate data while playing Whack-a-Mole. We’ll use the data collected to show you what we can do.

Every year at The Next Web a lot of innovative and exciting Startups are on show for the Startup Rally. There is also the TNW Kings of Code Hack Battle, which is described by TNW like this:

In less than 30 hours, our goal is to bring together the world’s leading platforms (APIs and SDKs) with an international group of coders. Mobile and web developers and graphic designers from all over the world are hereby invited to come to Amsterdam to hack cool applications on top of these Web APIs and mobile platforms.

So, in other words, we are expecting to meet a lot of interesting folks!

Other blog posts

Start your free, no-risk, 4 week trial!

Amazon Load balancing issues

Start your free, no-risk, 4 week trial!

Amazon Load balancing issues

As we move a greater number of services towards the cloud (Amazon Web Services) we pioneer our way into an brand new universe of opportunity. We also come across technical issues for which no documentation exists on the internet (we know sounds a bit like Star Trek and Lucasfilm). So we are learning every day, which makes this process very enjoyable.

To give an example, take amazon’s Load Balance service (ELB).
We moved some of our script-serving traffic to an auto-scaling load balancer and watched the results with all types of monitoring tools. The response time is fantastic! On their instances, the scripts are served in 0.15 seconds, our previous provider (one of the largest of the US / world) served scripts in 0.20 seconds. Thats a 25% speed increase !!

There is, however, a downside: Once in a while it takes 1.5 seconds to load a script. We are currently investigating with amazon why this is happening, the explanation appears related to keeping tomcat conncections alive.
There is no reason for us to keep connections alive on a stand-alone server, but with the instances talking to the load balancer only, keeping the connections open could be a another speed increase. Our main concern of course is random spike in loading time, but we’re confident to figure it out pretty soon.

UPDATE:
after some conversation with Amazon techies it seems we have resolved the issues.

Here’s some things they they wrote: ”

The load balancer tries to reuse persistent connections if the instance speaks HTTP/1.1. In this case, the load balancer may end up using a stale connection because the instance did not send the “Connection: close” header. This race condition may also have something to do with the non-2xx responses.

For HTTP load balancing, the keep-alive setting is a per-connection setting. What I mean by this is, When you change the setting on your web server, it affects the connection between ELB and your server. It does not have any affect on the connection from the client to ELB. So, although you may only expect your ultimate clients to each make single infrequent requests, ELB ends up concentrating requests from many clients over a smaller number of connections if you allow connection persistence on your server. This will offload much of the connection work from your server and also make better use of the available bandwidth. “

So We did some more test with keep-alive but nothing seemes to really help

Eventually we set our

maxKeepAliveRequests=”1″

as that gave us the best performance.

from tomcat documentation:
maxKeepAliveRequests
The maximum number of HTTP requests which can be pipelined until the connection is closed by the server. Setting this attribute to 1 will disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 will allow an unlimited amount of pipelined or keep-alive HTTP requests. If not specified, this attribute is set to 100.

UPDATE 2:
One thing to mention though is that after i gave it some weeks of rest, and accepting the random lag, i did the test again and almost all the lag is gone !!

Not sure if amazon changed anything or that the loadbalancer ‘learned’ how much connections were needed. but you dont hear me complaining.

Other blog posts

Start your free, no-risk, 4 week trial!

Setting up tomcat 6 with APR and ssl

Start your free, no-risk, 4 week trial!

Setting up tomcat 6 with APR and ssl

Last week i had to configure a new tomcat server to work with ssl and the apr libary, i’m going to put my notes here cause it took me some time to figure it all out, and maybe it will help some other people too

Step 1. update your server to ahve all the nessacary stuff
We need OpenSSL including the devel-libs and ofcourse the APR libs

yum install openssl openssl-devel apr apr-devel

Step 2. Building the tomcat-native-apr libs
I assume you have a working tomcat allready installed, mine is in /home/tomcat change it to your tomcat home dir
you need to unpack the  sourcefiles located in your tomcathome/bin directory

cd /home/tomcat/bin/
tar xvfz tomcat-native.tar.gz

go to  the building directory

cd tomcat-native-*/jni/native/

configure and make the lib files with the path to your apr-config and the openssl libs

./configure –with-apr=/usr/bin/apr-1-config –with-ssl=/usr/lib/openssl
make
make install

Step 3. Having tomcat find your APR libs
Tomcat needs to know the location of the APR libaries, so you need to add the following line to your startscript or

-Djava.library.path=/usr/local/apr/lib

restart tomcat and you should be done!

Other blog posts

Start your free, no-risk, 4 week trial!

Setting up a auto scaling, load-balanced, webserver with Amazon

Start your free, no-risk, 4 week trial!

Setting up a auto scaling, load-balanced, webserver with Amazon

Step 1. Define your loadbalancer
As of now, Amazon only supports 2 ports: the default web-traffic on port 80 and ssl secure https traffic on port 443.

Unfortunatly you need to choose 1 of them,  but i hope they will change it in the future. You also need to select a availabilityzone, make sure your servers are in the same zone..

elb-create-lb LoadBalancerNameHere –headers –listener “lb-port=80,instance-port=8080,protocol=HTTP” –availability-zones YourPreferedZone

Step 2. Define your LaunchConfiguration
The  LaunchConfiguration stores the ami you want to autoscale and the instancetype to go with that

as-create-launch-config LaunchConfigurationNameHer –image-id YourAmiIdHere –instance-type YourInstanceTypeHere

Step 3. Define your AutoScalingGroup
Your AutoScalingGroup combines the data from the previous 2 steps and adds the minimum and maximum amount of instances you want the auto-scaling mechanism to launch

as-create-auto-scaling-group AutoScalingGroupNameHere –launch-configuration LaunchConfigurationNameHere –availability-zones YourPreferedZone –min-size 1 –max-size 5 –load-balancers LoadBalancerNameHere

Step 4. Defining your trigger and launching it all
From the moment you define your trigger, Aws will launch what you have defined.
This example wil launch 1 instance with a trigger to add one instances to maximum of 5 when the 1 minute average CPU load has become higher than 80% for 10 minutes, and will scale down with one instance when the CPU load of the instances has been lower than 40% for 10 minutes

as-create-or-update-trigger –trigger TriggerNameHere –auto-scaling-group AutoScalingGroupNameHere –namespace “AWS/EC2” –measure CPUUtilization –statistic Average –dimensions “AutoScalingGroupName=AutoScalingGroupNameHere” –period 60 –lower-threshold 40 –upper-threshold 80 –lower-breach-increment=-1 –upper-breach-increment 1 –breach-duration 600

Step 5. Monitor and finetune
You can use the folowing to check and monitor if your setup is working

as-describe-scaling-activities AutoScalingGroupNameHere

as-describe-triggers AutoScalingGroupNameHere

Other blog posts

Start your free, no-risk, 4 week trial!