Posts tagged Android
Pricing Strategies for iOS / Android apps
Sep 30th
Mobisoft had a top paid app in a revenue-share model with client. App scaled to # 21 in lifestyle category. Naturally, we were excited to know the numbers – downloads, paid/free, adv hits etc. Although we made it great in terms of popularity, the earnings were less than expected.
The main reason was not having effective strategy for pricing model of app’s inApp & subscription purchases. What we realized is that “It could have been great to work on pricing strategy while developing the app” i.e. Monetization of app.
Why Monetize?
- Generate money
How?
- Compulsion Loops, there are ways to draw user back into the app
- Engagement, does it have engagement elements that could be monetized, i.e. virtual currency?
- Value, is it worth your users’ time?
Models
1. In-app purchases
2. Subscription
3. Ads
4. Location-based offerings
5. Social media sharing and aggregation
To do
1. Try various in-app models to find the combination that maximize your revenues
• Games: Subscription based casual gaming package + premium payment for sending best scores
• E-books for kids: read once for free. Pay to read again
• Security: free trial (e.g. 30 days) . Paid license for 1 year period
• Video: pay per gallery
2. Freemium strategy
- Strongest marketing play Risk reduction
- Developers should be focused on finding consumers who are willing to pay, not trying to completely satisfy free-rider consumers
In-App single purchase
Pros:
• This is probably the easiest path to implementation and launch and it’s straightforward and proven
• Virtual goods/currency through In-App
Cons:
• No ongoing revenue stream No access to user data – makes selling advertising difficult.
• One potential workaround is to build in-app surveys, which pushes data back.
Subscription – I
Pros:
- Revenue is sustainable
- Renew just as other web based subscriptions
- Easy extendable as an add-on
Cons:
- Requires user management solution
- Requires users to leave the app and visit the publisher’s website to subscribe
- Conversion rate lower than in-app purchases
- Success : lifetime value of a subscriber > revenue lost from lower conversion
Subscription – II
Apple’s subscription policy for publishers:
- Apple still gets a 30% cut of any subscription a reader signs up for inside the App Store.
- Publishers can now offer an app subscription for a different price than what they might sell their app for in the App Store.
- Publishers can’t link to an external-to-Apple location that sells a subscription within the app.
Advertising
Apple: iAd platform – Adv as an app
Third party : adMob, Medialets etc
Pros:
- Easier to command advertising premiums and less pressure to live up to metrics
Cons:
- Mobile budgets just aren’t well-defined
- Apple changes strategic decision with third party ad integration
Location Based Offerings
Pros:
- Awesome mobile offerings into a high-fidelity advertising environment
Cons:
- Complexity in integrating these systems
- Requires the device be connected to the internet
Social, Sharing & Aggregation
Pros:
- Cost-effective
- Viral marketing
- Better user engagement
Cons:
Getting advertiser support on a product as nebulous as this is challenging
Other payment integrations
- Paypal API integrations
- Carrier billing option – Very easy for users to pay
- Virtual credits
- Google Checkout
Other billing platforms
1 MoVend payment platform
- Easy integration – Supports Android, BlackBerry, Windows Phone7
- Sales Track Better user engagement
2 Bango
Supports all mobile platforms including Operator billing
Mobisoft Infotech recommend to work with clients as partners and provide various pricing strategies to monetize their app. It will be certainly helpful to clients to get pricing strategies correctly integrated while the app is being developed rather than working on monetization after app is live.
Thank you.
Mobile happenings round the corner
Nov 12th
Blackberry Playbook development
The RIM blackberry has now made entry to tablet war. The ‘Playbook’ tablet for blackberry has promising feature list and it can be looked useful business users as well as end consumers. Adobe has got an edge after working with RIM by means of AIR based application development for Blackberry playbook.
Playbook promotion: RIM has a plan to provide one free BlackBerry PlayBook to registered vendor with their App World, with an approved AIR application that is available for the BlackBerry PlayBook prior to its launch.
Adobe’s AIR software developer kit (SDK) apparently has integrated key development features with the PlayBook’s operating system. This will help developers to create powerful apps with AIR capabilities.
Launch of Windows Phone7
Windows phone7 mobiles are being launched in the market since October & will continue to do so with various manufacturers this quarter 2010 Q4. Microsoft has announced ten Windows Phone 7 handsets for 30 countries. They are working with 60 mobile operators around the globe. Microsoft has even more handsets coming in 2011 including the first one for Sprint and Verizon in the US
It would be interesting to see the penetration of Windows phone7 handsets to established market. The AppStore for Phone7 mobiles also need to have enough number of applications in place in order to keep the momentum intact. We are excited about the competition craze.
The Android gingerbread aka 3.0
Next level Android OS is being expected early next year 2011. Google is also preparing this launch to continue the rapid growth Android has been able to achieve since last two quarters. The Gingerbread, or Android 3.0, is going to represent the high-end smartphones. Base versions of 2.1 will continue to support low-end phones.
The Android 3.0 will come up with a completely new user interface. Animated transitions between mobile applications and screens would be definite part of it. HD quality of the display is set to increase with Android 3.0 which will support displays with 1280 x 760 resolution
This is simply getting better and better.
iOS 4.2 launch & Airprint wireless printing
The iOS 4.2 for iPad is going to include a number of features including multi-tasking, folders support and unified mail inboxes.
Unified support for iphone and ipad both the devices will be provided through iOS 4.2
Airprint wireless printing for iPad, iPhone and iPod Touch devices with the iOS 4.2 launch are being worked out by Apple.
AirPrint would be that it can automatically finds printers on local networks and print text, photos and graphics to them wirelessly over Wi-Fi without the need to install drivers or download software.
Exciting times round the corner for sure!!!
Team Mobisoft Infotech
Call log deletion in Android
May 27th
In order to delete a call log entry in android device/ Emulator, first of all we must know where the log information is stored. Android stores the log information in its internal database as a content provider – “content://call_log/calls”.
Call log Basics
A content provider is used to share data between multiple applications. In Android, a content provider is a specialized type of data store that exposes standardized ways to retrieve and manipulate the stored data.
The call log data is used by multiple applications and hence android stores it as a content provider. The Call Log provider contains information about placed and received calls.
To do:
- Get uri for call log content provider.
- Query the content provider.
- Search the row in result set(curser) .
- Delete the row from content provider.
URI
The call log content provider exposes a public URI “content://call_log/calls” for recent phone calls that uniquely identifies its data set.
Uri allCalls = Uri.parse(“content://call_log/calls”);
Querying a Content Provider
To access database we need to query the content provider by using the uri which the given content provider exposes.
Cursor c = managedQuery(allCalls, null, null, null, null);
Reading retrieved data for deleting particular log entry
Cursor c stores record set of results regarding the log details. So, now in order to delete any record single record, call ContentResolver.delete() with the URI of a specific row.
To delete multiple rows, call ContentResolver.delete() with the URI of the type of record to delete (for example, android.provider.CallLog.Calls.CONTENT_URI) and an SQL WHERE clause defining which rows to delete.
Here we will delete the row by comparing ‘NUMBER’ column with the number entered by user.
while(c.moveToNext())
{
// get particular number for which log entry is to be deleted.
String strNumber= etNumberForCall.getText().toString();
// make a selection clause.
String queryString= “NUMBER=’” + strNumber + “‘”;
Log.v(“Number”, queryString);
CallLogActivity.this.getContentResolver().delete(UriCalls, queryString, null);
}
Screen Shorts:
Following is complete source code:
package com.mobisoftinfotech;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/**
* @author Mohd. Akram
*/
public class CallLogActivity extends Activity {
/** Called when the activity is first created. */
EditText etNumberForCall;
Button btnDeleteNumberFromCallLog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etNumberForCall=(EditText)findViewById(R.id.EditText01);
btnDeleteNumberFromCallLog=(Button)findViewById(R.id.Button01);
btnDeleteNumberFromCallLog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String strUriCalls=”content://call_log/calls”;
Uri UriCalls = Uri.parse(strUriCalls);
Cursor c = CallLogActivity.this.getContentResolver().query(UriCalls, null, null, null, null);
if (c.getCount()<=0)
{
Toast.makeText(getApplicationContext(), “Call log empty”,Toast.LENGTH_SHORT).show();
etNumberForCall.setText(“”);
}
while (c.moveToNext())
{
String strNumber= etNumberForCall.getText().toString();
String queryString= “NUMBER=’” + strNumber + “‘”;
Log.v(“Number”, queryString);
int i=CallLogActivity.this.getContentResolver().delete(UriCalls, queryString, null);
etNumberForCall.setText(“”);
if(i>=1)
{
Toast.makeText(getApplicationContext(), “Number deleted”, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(), “No such number in call logs”, Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
Installing APK Files on Android Device Emulator
Feb 1st
Let me first clear one thing, You do not need Eclipse or Eclipse-plugin the Android Development Tools (ADT) in order to run .APK file (adhoc builds) on emulator. They required for the software/application development for Android, but are not necessary for application adhoc testing on emulator.
You will need to download the Android SDK, which can be obtained here: http://code.google.com/android/download.html
Before running .apk into emulator, it is needed to setup the sdk first.
Installing the SDK:
After downloading the SDK, unpack the .zip archive to a suitable location on your machine. For the rest of this document, we will refer to the directory where you installed the SDK as $SDK_ROOT.
Optionally, you can add $SDK_ROOT/tools to your path:
- On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look for a line that sets the PATH environment variable and add the full path to your $SDK_ROOT/tools to it. If you don’t see a line setting the path, you can add one:
export PATH=${PATH}: - On a Mac, look in your home directory for .bash_profile and proceed as for Linux. You can create the .bash_profile, if you haven’t already set one up on your machine.
- On Windows, right click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path under System Variables, and add the full path to the tools/ directory under $SDK_ROOT to it.
*Note* – Updating the SDK for newer releases means you might also need to update the PATH settings.
If you have not created android virtual device (AVD) yet, then in ../tools directory,
run command ./android
This will open up the window to let you add virtual device with specific sdk version 1.6 or 2.0
To check AVDs present you can run the command ./android list avd
Using emulator:
1. Go to $SDK_ROOT/tools directory and execute the file ‘emulator.exe’.
You might need to also include android virtual device (AVD) to command line execution for example,
./emulator -avd TestDevice
Please wait couple of minutes until it loads. You should see the home screen of the android emulator.
2. Save/copy the APK file directly in the $SDK_ROOT/tools directory.
3. Goto Shell/Terminal/CommandPrompt, adb install fileName.apk (You will need to shell/terminal/cmd sessions live)
or ./adb install fileName.apk
4. if there is ‘Path not found’ error then you need to add $SDK_ROOT/tools directory to your system PATH settings correctly.
5. After above command executions, you will be able to see installed apk into emulator.
Good luck!
Regards,
Shail
Android is Open Source
Dec 7th
Google is hardly the first company to try using open-source software to shake up the industry. Open Handset Alliance, and the open-source community made all of the work that they have poured into the mobile platform is now officially available, for free, as the Android Open Source Project.
What is open
The core Android platform will be 100% open source. Even multimedia codecs, which historically are held close to the vest will be open. Except where noted, everything will use the Apache software license (ASL v2). This is the same open source license used by projects like the Apache HTTP server, Tomcat, Harmony, and many other large projects in the open source community.
There are two exceptions to the Apache license rule:
Software that is already covered by by a free/open source license will continue to use that license. Most notably, this includes Google’s enhancements to the Linux kernel. Linux uses the GNU Public License (GPL v2) so enhancements to the kernel will use the same license.
Any software that touches Eclipse, for example the Eclipse Android Development Tools plug-in (ADT) will be licensed under the Eclipse Public License (EPL), because that’s what Eclipse uses.
Google plans to make a few of their applications closed-source, including their GMail application. These programs are not part of the core Android system, even though they may be bundled with Android phones.
Openness
Android was built from the ground-up to enable developers to create compelling mobile applications that take full advantage of all a handset has to offer. It is built to be truly open. For example, an application could call upon any of the phone’s core functionality such as making calls, sending text messages, or using the camera, allowing developers to create richer and more cohesive experiences for users. This is true, as a developer you can do everything, from sending short messages with just 2 lines of code, up to replacing even the HOME-Screen of your device. One could easily create a fully customized operating system within weeks, providing no more of Google’s default application to the user. Android is built on the open Linux Kernel. Furthermore, it utilizes a custom virtual machine that has been designed to optimize memory and hardware resources in a mobile environment. Android will be open source; it can be liberally extended to incorporate new cutting edge technologies as they emerge. The platform will continue to evolve as the developer community works together to build innovative mobile applications.3
Different Layers of Android

The Red Layer

The red layer from represents the services offered by the Linux kernel and associated GNU utility packages ported to the ARM architecture. These components are licensed under the GNU [General Public License], the GPL, or the GNU Lesser General Public License, the LGPL. Being subject to the GNU GPL and LGPL licenses, these components are licensed with all source code included. Furthermore, due to the viral nature of the GPL license, any modification to this layer or derived work must be distributed as source to any 3rd parties using the same licensing terms. The GNU/Linux ARM port is mature, stable, and used in many embedded projects both in and outside of Google.
The Green Layer

The green layer consists entirely of open source libraries available under various licenses. Some of the libraries come from the GNU project itself. The licenses here vary from the LGPL, BSD, MIT and are completely in the public domain in the case of the SQLite database. However, even if the licenses of some of the components found in this layer are more permissive and could allow a hardware vendor for customizations not found in other Android handsets, Google has created the Open Handset Alliance that owns the Android trademark. As part of this effort, any phone that wishes to be branded as an Android handset must meet the non-fragmentation rule. As such, any phone that would customize the libraries found in this layer, add libraries or remove them altogether would no longer be able to brand itself as an Android phone. Furthermore, under this same pledge, its license to the proprietary Dalvikvirtual machine found at the core of the Android platform would be considered null and void.
The Blue Layer (Application Frameworks)

In this layer, the application developer has access to what Android refers to as ‚ ‘service’ processes. These services are invisible to the user of the handset. Application developers can communicate with these services via a message bus. For example, a contact application might instigate a phone call at the behest of a user request by calling on the services of the telephony manager. All code found in this section is currently closed source, is written in Java specifically for the Dalvik virtual machine. It is not yet clear under what license these modules will be made available in the future.


