I registered to Microsoft's App Hub (Windows Phone developer account), paid the registration fee (~100$), but I didn't get an invoice. Checking online only made it clearer that Microsoft does not send an invoice for App Hub registration fee since more people had the same problem.
I opened a ticket at App Hub support here: https://windowsphone.create.msdn.com/support
I've waited for 4 days and got no answer, than:
(1) I asked a friend from Microsoft what to do. He sent me to Microsoft regional support.
(2) Calling the support they redirected me to MSDN support (since the registration is on create.msdn.com).
(3) MSDN Support told me to send an e-mail to apphub@microsoft.com
(4) The answer from apphub@microsoft.com was to open a ticket at Hub App support..... CRAP.
I still don't have an invoice, but I do have second thoughts about developing for Windows Phone.
Way to go Microsoft.
Tuesday, April 24, 2012
Sunday, March 18, 2012
AdMob: ad pending approval
My AdMob ad was pending approval for 3 weeks until it was approved.
It's a bit more than what I expected.
It's a bit more than what I expected.
Labels:
App Promotion
Sunday, March 11, 2012
Enum.GetValues does not exist on Windows Phone
Enum.GetValues does not exist on Windows Phone. The solutions here and here requires LINQ.
I've changed the solutions so they would fit Windows Phone without LINQ. I also reduced memory allocations (not using enumerators and generic collections):
public static T[] GetValues<T>()
{
Type enumType = typeof(T);
if (!enumType.IsEnum)
throw new ArgumentException("Type '" + enumType.Name + "' is not an enum");
FieldInfo[] fields = enumType.GetFields();
int literalCount = 0;
for (int i = 0; i < fields.Length; i++)
if (fields[i].IsLiteral == true)
literalCount++;
T[] arr = new T[literalCount];
int pos = 0;
for (int i = 0; i < fields.Length; i++)
if (fields[i].IsLiteral == true)
{
arr[pos] = (T)fields[i].GetValue(enumType);
pos++;
}
return arr;
}
Labels:
Windows Phone
Monday, February 20, 2012
Android Market Optimization
This subject also known as App Store Optimization (ASO). Few people started to write posts on this subject for Android, this post is an on-going work to collect links to those posts:
- There's a series of posts on Droid-Blog blog: Keyworks & Description, Icons, Graphics & Videos
- A post called Hacking the app stores
Labels:
Android,
App Promotion,
ASO
Wednesday, February 15, 2012
Android promotion: pay per install
I tried looking for ways to promote Android apps. It was hard. Why companies aren't saying: we're doing Pay-Per-Install campaigns? (alternative names include: Cost-Per-Install, CPI, Cost-Per-Action, CPA)
Here's a list of pay-per-install for Android I've found so far (on going work, please correct me if there's something wrong here):
References:
Here's a list of pay-per-install for Android I've found so far (on going work, please correct me if there's something wrong here):
- AppBrain - Free apps only, Minimum bid: 0.20$, minimal daily budget: 25$, minimal campaign budget: 100$. See more details here. No SDK integration required,
- TapJoy - Pay-per-install plus optional pay-per-action (which probably cost much more). Minimum bid: 0.10$ for rewarded install. SDK integration required. Does not accept PayPal.
- Flurry AppCircle - Free & paid apps. Minimum bid: 0.75$
- Everbadge - Free & paid apps. Minimum bid: 0.15$. SDK integration required,
- AppRedeem - Free & paid apps. Minimum bid: 0.50$ (paid apps), 0.15$ (free apps)
- PlayMobs - Minimum bid: 0.10$ for rewarded install. No SDK integration required.
References:
- https://groups.google.com/forum/#!msg/android-discuss/tlYilbiPhDc/nxKsnze59tEJ
- User comment: updated Everbadge minimum bid.
Labels:
Android,
App Promotion
Monday, January 30, 2012
Downloading Android source code on Windows
Here's the short-short version:
To download the most interesting project (IMHO) frameworks/base, the GIT command is:
git clone https://android.googlesource.com/platform/frameworks/base
Projects of interest:
- Download and install command line Git client: msysgit.
- Download the root Android project using Git.exe (located in /bin folder of msysgit)
git clone https://android.googlesource.com/platform/manifest - In the target folder you'll find few XML files. Open default.xml. You can see multiple tags
. Choose the project you want to download. You need the name attribute of the project. Write the following line to download:
git clone https://android.googlesource.com/
To download the most interesting project (IMHO) frameworks/base, the GIT command is:
git clone https://android.googlesource.com/platform/frameworks/base
Projects of interest:
- packages/apps/XXXX - The project names of the apps that comes bundled with Android (excluding proprietry Google apps such as the Android Market) such as the Gallery, Camera etc.
- external/XXXX - 3rd party software (ping, bzip, etc).
- frameworks/base - The sources of the Java system.
Saturday, January 21, 2012
Android (Java) object pool
There are many ways to implement an object pool. Here's the way it's implemented in some classes in Android (Message, MotionEvent, Parcel, VelocityTracker):
private MyObjectName mNext;
private static Object gPoolSync = new Object();
private static MyObjectName gPool;
private static int gPoolSize = 0;
private static final int MAX_POOL_SIZE = 10;
public static MyObjectName obtain() {
synchronized (gPoolSync) {
if (gPool != null) {
MyObjectName m = gPool;
gPool = m.mNext;
m.mNext = null;
gPoolSize--;
return m;
}
}
return new MyObjectName();
}
public void recycle() {
synchronized (gPoolSync) {
if (gPoolSize < MAX_POOL_SIZE) {
// Perform object data cleaning and data releasing before recycling
clearForRecycle();
mNext = gPool;
gPool = this;
gPoolSize++;
}
}
}
Labels:
Android
Subscribe to:
Posts (Atom)