Top 6 Mistakes App Entrepreneurs Make During App Development and Marketing

Building a successful mobile app is a tough task. Chances are low for all mobile app developers to excel. New app developers who are jump starting out in the game are afraid to take the risks, as most of the new apps are left unnoticed in the market. If you see the app store, you will find that more than 50% of the apps fail in the market. This is the reason why beginners face a lot of challenges to become successful app developers.

How entrepreneurs enter the app market

There are many companies that encourage beginners to step up and try their luck in mobile app development. There is a great difference between being technically skilled and becoming successful. Not all skilled app developers are successful in mobile app industry. The biggest task for app developers is to develop a unique app and market it straight to their customers. I would like to share the top 6 mistakes entrepreneurs should avoid while developing and marketing the mobile app.

  1. Building an app for multiple platforms

This is one of the common mistakes app developers do. Entrepreneurs face a very competitive space, as there are millions of apps on Google Play and Apple Store. Instead of doubling the cost of developing app for multiple platforms, one should focus on building for one platform first. By launching a mobile app on two different platforms simultaneously, you are adding more to the development time and cost.

Additionally, if you make any changes to the design and/or functionality of the app in one platform, you have to do it on both places. Hence, developers should avoid this mistake of developing for multiple platforms at the same time.

  1. Incorporating too many features

Most of the mobile apps fail in the market due to very less or too many features. However, there are lots of apps that are plain and simple, and yet have a great potential to sustain in the market. Users check new apps for a short period of time. Providing too many features will drive away users, as the features may make the app look complicated.

The goal of entrepreneurs should be to keep the users glued to the app. This is possible by incorporating essential features on primary screen and rest of the features to secondary screens. This strategy not only keeps the app simple, but attracts new users too. The app users will not show much interest in overwhelming design and features, and discard the app. Hence, it is important to develop apps with this in mind.

  1. Forgetting the ‘WOW’ factor

The number of mobile app users is expected to reach 80 million by the year 2018. Seeing the increasing number of mobile app users, App Stores of Android and Apple have set a bar with the design and user experience. If you give your Smartphone to a child, he/she will know how to use it. This means, the expectations of mobile users are entirely different from that of web. The user will give up on your app, if it is very difficult to use.

On the contrary, online users may not give up so easily despite of poor user experience. App developers should understand this difference and build extra-ordinary mobile apps with stunning features and functionality. As soon as the user launches the app, there should be a ‘wow’ factor to hook up the users.

  1. Inflexible marketing plan

App development and app marketing are two important phases of building a successful app. However, entrepreneurs tend to show much interest in development compared to app marketing. As the App Stores are crowded with millions of apps, your app may not be discovered on app store even on the day of launch if you fail to market it properly. Entrepreneurs should think of a perfect marketing plan as the app is being developed. Apps can be marketed in multiple ways by creating a clear strategy of target audience and their preferences.

If we see social media, we understand how drastically it has changed in the recent years. Marketing goals are changing from time to time, as a result of which what is working today may not work tomorrow. Entrepreneurs should create a flexible marketing plan that accommodates current and future market situations. By being flexible with own marketing strategies, app entrepreneurs can stay ahead of others.

  1. Putting all the efforts in one basket

Technology and marketing are ever evolving, which means a single strategy will not generate same results. If you see the development and marketing plan of the top 10 best mobile apps, you will see how they used technology to market their apps. The marketing channels they used earlier were entirely different from that of the channels they are using now. It means entrepreneurs should diversify their marketing efforts to ensure that they are not putting all the efforts in one basket. Focusing on one tactic for long period may diminish the returns.

My advice is to consider marketing plans as investment strategies. If you want a steady increase in popularity & profitability of the mobile app, you need a healthy mix of marketing tactics. Trying new marketing tactics and plucking the ones that are no longer effective will increase the popularity of the app.

  1. Ignoring the audience and not releasing the updates

As an app entrepreneur, you should understand the fact that you are developing mobile app for other people. We all know that people have different need and preferences, and it is difficult to develop an app for everyone. It is essential to define target audience before defining the features of apps. Before developing an app check what actually users want and what type of solution they prefer.

Even after developing an app that has demand in the industry, there would be people who are unsatisfied with the features or performance of the app. The job of an app entrepreneur doesn’t end with development and marketing. The mobile app should be improved on a regular basis according to the user’s preferences. Once the bugs are fixed, an update must be released so that audiences are aware of the fixes.

Developing a great mobile app is not an easy task. There are lots of hurdles that come across while developing and marketing the app. By avoiding the above listed mistakes while developing and marketing the app you will increase the chances of creating a successful app that is covered by press and is well monetized.

Getting into the world of mobile app development is tough at first. However, with lot of hard work, dedication, commitment and skills one can expect the app to hit the market with a ‘BANG’. As a beginner, entrepreneurs should create something new and unique to have a good start in mobile app development industry. An established mobile app development company can further provide professional approach and advice to entrepreneurs and can make the whole process a lot easier for them.


Apps That Google Play Turns Down: A Guide for Every Android App Development Company

If I ask you to name the must-go place for every Android users, hardly, anybody would do an error by deviating from Google Play. The official app store of Android is getting bigger and bigger with every passing day. The number of app download went up from 1 billion in August 2010 to 65 billion in May 2016. Definitely, the success can be attributed to the incessant effort of every Android app development company and their developers.

However, way to Google Play is not easy. In fact, it’s getting tougher with every passing day. Google demands more commitment to quality from every Android mobile app development company. Here is a list of content materials that are not accepted by Google in the submitted apps.

Sexually Explicit Content

Companies in Android development should avoid building apps with content materials depicting sex acts or sexually suggestive poses, promoting sexually explicit user-generated content or content showcasing, describing or encouraging bestiality or marketing sex toys.

Child Endangerment

Google not just turns down apps containing any kind of child sexual abuse materials but also exercises legal measures. Google Accounts of such app development companies are also seized.

Violence

An Android app development company should refrain from building apps containing or depicting any type of gratuitous violence or other dangerous activities, for instance, app content depicting realistic violence or violent threats to any person or animal, terrorist groups or their attacks, violent activities, including bomb- or weapon-making or instructions on how to create bombs or suicides.

Bullying and Harassment

In no way, an Android app should facilitate or encourage threats, harassment, or bullying. Apps relying on user-generated content (UGC) should also adopt right review process to stop such digital content. Posts, comments, or photos within an app aimed at harassing or ridiculing a person are not rejected.

Hate Speech

Google Play loves peace and so should developers, after all, they are not different from the rest of the society. They should not build apps advocating inflammatory speeches against groups of people targeting their origin, religion, disability, gender, age, sexual orientation, etc.

Sensitive events

Businesses trying to capitalize on natural or any kind of tragedy linked to an individual, group or society will find Google Play harsh. Hence, Android app development companies should not waste their time and resources on such apps.

Gambling

Google Play is not the right place for apps linked with gambling, including online casinos, sports betting, lotteries, etc. Even if the app is redirecting users to a different site or app, it would be considered as a violation against the Play Store conducts.

Illegal Activities

Apps depicting or encouraging illegal activities like sale or purchase of banned drugs or prescription drugs without a prescription, consumption or marketing of drugs, alcohol, or tobacco by minors are certain to get declined by Google Play.

Hope the information was useful. No matter where we come from, we should support Google and endeavor to build a peaceful and progressive society. If you are an Android developer, don’t build such apps; if you are the user, don’t download such apps, and if you are from any law enforcement agency, don’t adopt any soft corner for people or companies behind such apps or content.


Do You Need to Know Everything About Hybrid App Development?

Hybrid mobile applications are like any other applications you will see on your mobile. They get easily installed on your mobile device. You can look for these apps in the App stores. By using these apps, you can engage your friends via social media, play games, track your health, take photos and much more.

Hybrid mobile applications are developed using a combination of web technologies like CSS, HTML, and JS as same as websites on the internet. The major difference is that hybrid applications are hosted inside a native app which further uses a mobile platform’s WebView. Here, WebView is a chromeless browser window which is typically configured to run fullscreen.

In fact, hybrid mobile apps enable you to access various device capabilities viz. camera, accelerometer, contacts, and much more. However, inside mobile browsers don’t allow you to access these capabilities from it. Furthermore, hybrid mobile applications include native UI elements in those situations where it is necessarily required, as proved by Basecamp’s approach towards hybrid mobile application development.

It is not easy to answer the question how a mobile app is built. Similarly, hybrid mobile apps are no different. A well-written hybrid application should not behave or look any different than its native equivalent. However, users don’t care about it as they only want an app that works well. It is what actually matters to them. If you are trying to figure out whether a mobile application is hybrid or native, it would be like you are trying to differentiate rare grape varieties of wine.

Unless you are the one who really cares about this, it is not terribly important. What all matters are how your hybrid mobile application development is going to work in the long run as no one will care about how it was built. A hybrid mobile application is said to be good if it performs well for its users.

How are hybrid mobile applications built?

Like other websites are built, hybrid mobile apps follow the same manner. Both are built with a combination of technologies like CSS, HTML, and JS. Generally, a hybrid app targets a Web View which is hosted inside a native container rather than targeting a mobile browser. This allows its users to access various hardware capabilities of the mobile device.

Many hybrid mobile apps today leverage Apache Cordova, a simple platform that consists of a set of JavaScript APIs for accessing mobile device capabilities through plug-ins that are built with native code. These plug-ins include APIs in order to access the device capabilities like contacts, accelerometer, camera, and more. In fact, a huge number of plugins are built and maintained by mobile app developers community-at-large which is can be found in the Apache Cordova Plugins Registry. A group of plugins that have been properly tested, documented, and extended can be found at the Telerik Verified Plugins Marketplace.

If we talk about Apache Cordova, it was actually started as a project named PhoneGap. But nowadays, PhoneGap is considered as a distribution of Apache Cordova which includes additional tools. To know more about its history, you can check out Cordova, PhoneGap and what’s in a name?

Various application assets like CSS, HTML, JS are packaged via tooling through Apache Cordova for targeting platform SDKs. Once a hybrid app is built, it can be run just like any other app on the mobile device. Apache Cordova provides the tooling that is highly driven by a command line interface. However, mobile app developers can still leverage IDEs such as Visual Studio and effective solutions like the Telerik Platform to further increase productivity.

Since mobile app developers don’t want to be getting locked into proprietary platforms, so hybrid mobile apps give a way to mobile app developers for re-using their existing skills in web development. This mainly includes SDKs provided by platform vendors and the programming languages.

Hybrid mobile app development somehow looks appealing to a company’s bottom line such as Why hire a developer for each platform when you can hire one developer and target all of them through CSS, HTML, and JavaScript? But, the reality is actually a bit more complicated to accept.

Obviously, it’s true that mobile app developers become able to target multiple platforms with hybrid mobile app development. But when it comes to WebView or web runtime, each platform comes with a set of caveats. This is more true for Android and not consistent between OS versions.

Furthermore, there must be some unique capabilities of platforms to which a mobile app developer may wish to target. In such cases, a combination of platform-specific code and plugins must be utilized which will take advantages of those capabilities. Optionally, mobile app developers can take advantage of 3rd party web runtimes such as Crosswalk which can be further embedded into your hybrid applications.

When should you build a hybrid mobile application?

It is the foremost concern of every mobile app developer who wants to build a hybrid mobile app. The first thing you should do is to check your mobile application’s requirements. Before committing to a platform strategy must evaluate the technical merits as well as non-technical merits of hybrid mobile apps over the web and native mobile apps. You should first consider the following questions before developing a hybrid app:

– What are the technical abilities of your mobile development team?

– Which mobile app platforms do you wish to target?

– Are you looking to use the multiple capabilities of the mobile device?

– Do you want to distribute your apps through the app stores?

– Does the hybrid approach really live up to its promise in the coming years?

The above questions are needed to be answered properly before the development of mobile apps. You may further evaluate more questions in detail.

WHICH MOBILE APP PLATFORMS DO YOU WISH TO TARGET?

You may have a number of choices if you want to target more than one platform. This is because the web offers a highly interactive solution for this purpose. However, the mobile browser is your target. HYbrid apps lend itself to this due to its reliance upon the WebView.

On the other hand, Native apps find a unique space among this. In fact, you are essentially coupled to this platform if you rely upon platform-specific programming languages and vendor SDKs. For this case, Objective-C or Swift is used for iOS, Java is used for Android and C# is used for Windows phone.

DO YOU WANT TO DISTRIBUTE YOUR MOBILE APP VIA APP STORES?

If you want to distribute your app via an app store, you must build a native or hybrid app. You can not distribute sites through app stores. Hence, browser’s address bar is provided for this. Despite this limitation, whether you build a hybrid or native app, it is strongly recommended that you must have a website available for your mobile app. You need to create this because this will be the first place your app users might expect to go in case if they stuck with any problem.

ARE YOU LOOKING TO USE THE CAPABILITIES OF THE MOBILE DEVICE?

As compared to native and hybrid apps, websites have a limited set of abilities. These limitations are put up by a browser that effectively sandboxing it from mobile OS. A lot more device capabilities are exposed through HTML5 with the help recent developments with mobile browsers which include geolocation, camera, and others.

In spite of these advancements, support for advanced functionality is still limited. For an instance, streaming and media capture are still unsupported in various mobile browsers. Due to these limitations with mobile browsers, there are many mobile app developers who are compelled to evaluate native and hybrid apps as alternatives. These platforms enable mobile app developers to access device APIs. While in case of hybrid apps, plugins support this capability.

It is often said that native app development is best suited for apps where graphics performance is paramount. The best example is the mobile games which completely rely on complex visual interactions on the screen. No matter, how wonderful game app you have developed for your users and how flawlessly it operates from a functional perspective, you can expect this game app to have a very low app store rating if it is lacking energy. Due to these reasons, mobile app developers have long argued for using a hybrid approach to build their game applications.

However, there exist a number of solutions for hybrid mobile apps. This includes WebGL and HTML5 Canvas that are well-suited to build game applications. In fact, these technologies are most preferred and approachable for mobile app developers due to the presence of libraries like EaselJS, Paper.js, and others. This is not limited to game development only. Developers build more traditional, line-of-business apps by using frameworks like Kendo UI and Famo.us.

WHAT ARE THE TECHNICAL ABILITIES OF YOUR APP DEVELOPMENT TEAM?

The team’s technical abilities is another major factor when it is about to evaluate development options for mobile. To build native applications, you need to hire developers who are proficient and experienced with the programming languages of every platform that you wish to target and platform SDKs. But for building web and hybrid apps, you need to hire developers who use web technologies like CSS, HTML, and JS. You may also have a team that can target more than one platform with a single set of technologies. So, this is a worth considering when you have to evaluate your opinions.

DOES THE HYBRID APPROACH REALLY LIVE UP TO ITS PROMISE?

Lastly, it is important to know that hybrid is not the be-all and end-all approach for mobile app development. At the initiation of this article, I have thrown light upon the challenges of overcoming the inconsistencies between WebViews. While other challenges still remain. With hybrid app development, you can target the various features of a mobile platform in order to discover if they are inaccessible. This is because plugins used for them can be unreliable, out-dated or missing altogether. This takes you to the dilemma whether to remove an application feature or to write the plug-in by yourself.

You may find hybrid app development model restricted when you have to develop an app that requires numerous native features or an app where performance is critically required for the success of the app. With this situation, you may found yourself to forcefully choose native development technologies. However, these are considered as alternative approaches which let you build performant native apps without having core knowledge of tools like Android Studio and Xcode.

Furthermore, the JavaScript-based NativeScript framework allows developers to build Android and iOS apps that forego the WebView for interactive and enhanced performance. NativeScript provides 100% access to Android APIs and iOS, removing the reliance on plugins which prove limitations while developing hybrid apps. But it is also not the be-all-end-all approach for developing native applications. However, this approach to application development is powerful which become more powerful with a higher learning curve. With NativeScript, you would not be using HTML to build UI. So, NativeScript is seriously considered by app developers if they have to develop an application with non-trivial performance requirements


Important Guidelines to Choose the Best Mobile App Development Platform

Over the past few years, mobile application development has progressed rapidly and there are new applications coming into the market every now and then. Since the users of such apps are becoming more demanding, there is a great demand for apps that can serve their purpose the best. With such great opportunity to capture audiences through mobile phones, choosing the right mobile application development platform can help you to make your business a great success.

Today, a number of mobile platforms have come up, but selecting the best one that can satisfy your specific requirements is vital as it will allow you to reach a wider audience base while maintaining and managing the unique needs of your organization.

User experience: A good platform should always offer an optimized user experience on each device. The app should be engaging, delivering the functionality that the users need and designed for performance. So, while choosing a mobile application development platform, be sure that it can enable building an app that can address the unique requirements of your customers and organization that is both current and future.

Flexibility: There are different approaches to build an app, namely the web, native or hybrid. Each approach has its own benefits and limitations. So, select a technology that offers a flexible solution and can harness the benefits that each approach offers and support the entire mobile strategy of your business organization.

Target audience: Another biggest factor that should be considered is your target audience. If your business targets the mass market, then it is better to choose popular platforms such as iOS and Android. Consider mobile app developers who can select the appropriate technology to target most of your users and capture them at the right place and time.

Security concerns: Mobile apps are assuming the roles of critical systems in the enterprise and authentication and security have become the top concerns of app development companies. Your mobile application development company should ensure that the platform provides a robust security and authentication framework. The features include on-device encryption, offline authentication, secured client server communication, access control and many more.

Platform’s future prospects: The future of any mobile platform plays a great role while choosing for app development. Most software incorporate the latest technology into their updates and so you should make sure that your chosen technology will let you cost effectively handle your growing business and provide immediate recovery automatically without any risk or loss of data. It must be backed by support for new environments and allow you to extend your capabilities to meet customer and employees’ needs.

Check easy availability of developer tools and resources: Your selected framework should have the right tools to support the app developers so that they can successfully complete the project. Good resources and tools help them to fix bugs easily and quick reference helps them to develop the project according to the client’s needs.


Build a Mobile Video Chat Framework With Nex Gen Media Server (NGMS) API

Introduction

Nex Gen Media Server is best known as a multi-purpose media streaming server to deliver live and stored video to a variety of devices. The same media server can be embedded into a mobile application to facilitate real time video communication. Here we will use the NGMS API to facilitate building a video chat client for Android devices using the Android Software Developer Kit (SDK) and Google Android Native Developer Kit (NDK).

We will use NGMS to provide all of the network transport RTP services, video frame compression and decompression. NGMS will run as a natively compiled shared object used by our Android app. We will use a Java Native Interface (JNI) bridging layer to invoke native methods from Java application code.

Pre-requisistes

This article assumes that you have a basic understanding and at least an intermediate level of experience building Android apps. I will not go over the details of setting up and Android project in an iDE such as Eclipse. If you have previously created Android apps, or at least went through some example tutorials you should be able to utilize this tutorial to create a real-time video streaming client.

If you haven’t already done so, you will need to download the Google Android SDK (Software Developer Kit). In this example I used Revision 15 on a Linux 32bit machine. The java application layer is used to create the actual Android app. The app code will interface with a JNI layer to invoke the NGMS API routines.

You will also need to download the Google Android NDK (Native Developer Kit). In this example I used Revision 6b on a Linux 32bit machine. The NDK will be used for creating the native interface layer which serves as the glue between the native code and Java application code. You should also have a basic understand of the C programming language.

You should first begin by creating a skeleton Android application using an IDE such as Eclipse. In this example, the application will be called ngmsclient. The Java package name will be called com.example.ngmsclient and will target Android OS 2.3 or higher. The root project directory should contain a folder called “jni” which will contain the native sources used to interface with the Java application code. The example below assumes that you have a skeleton Android app working and will show you how to integrate an ExampleChat class into your Android project.

The Native Layer

The NGMS core embedded library is written in C and is packaged as a shared object file. Since the Android OS is based on Linux, the NGMS core library will run natively within your Android application space. You will need to obtain the NGMS core library for Android OS from the ngmsvid.com website. The essential components are the library files libngms.so, libxcode.so, and the header file ngmslib.h. The ngms bundled.so files will be packaged along with your ngmsclient.apk to provide video chat services.

The JNI Layer

We will build a shared library called ngmsglue.so which will serve as the glue between the ngms API and our Java application code. The structure of the Java Native Interface (JNI) directory within your ngmsclient project directory should look like this.


jni/Android.mk
jni/ngmsglue.c
jni/ngms/include/ngmslib.h
jni/ngms/lib/libngms.so
jni/ngms/lib/libxcode.so

ngmsglue.c will contain the code to control NGMS output and input features. The code will maintain two seperate NGMS API contexts, one for stream output parameters and one for stream input parameters. You should notice that the naming convention of each function should match the Java package and class name from where you are invoking the native code.

ngmsStartReceiver is called to initialize the NGMS capture input API to listen on port 5004 for a network video stream encapsulated over MPEG-2 TS. Each successive video frame will be automatically demuxed and decoded into RGB565 pixel format. The complete frame can then be read by calling ngmsReceiveFrame.

ngmsStartSender is called to initialize the NGMS stream output API to output encoded video frames to a remote host over port 5004. ngmsTransmitFrame is called to encode and transmit a single raw frame in NV21 pixel format.


/*
* ngmsglue.c
*
* JNI layer to access the NGMS streaming and capture API
*
*/

#include
#include
#include
#include
#include "ngmslib.h"

/**
* Holds the configuration for the NGMS RTP receiver and decoder
*/
static NGMSLIB_STREAM_PARAMS_T ngmsReceiver;

/**
* Holds the configuration for the NGMS RTP sender and encoder
*/
static NGMSLIB_STREAM_PARAMS_T ngmsSender;

/**
* Starts the NGMS capture service
*/
jint Java_com_example_ngmsclient_ExampleChat_ngmsStartReceiver (JNIEnv* _env, jobject _thiz)
{

char xcoderConfig[512];
char sdpConfig[512];
int i;

/*
* Before doing anything call ngmslib_open to open the NGMS service
*/
i = ngmslib_open(&ngmsReceiver);
if (i!= NGMS_RC_OK)
{
__android_log_print(ANDROID_LOG_ERROR, "ngms", "ngmslib_open failed with error %d", i);
return -1;
}

/*
* Construct an xcoder configuration key value string
*/
sprintf(xcoderConfig, "vc=rgb565,vx=320,vy=240");

/*
* Construct an SDP configuration for the RTP receiver
* Here we setup NGMS to read data over a MPEG-2 Transport Stream.
*/
sprintf(sdpConfig, "sdp://"
"m=video 5004 RTP/AVP 33n"
"a=rtpmap:33 MP2T/90000n"
"a=fmtp:33n");

/*
* Customize the capture configuration parameters
*/
ngmsReceiver.inputs[0] = sdpConfig;
ngmsReceiver.strxcode = xcoderConfig;
ngmsReceiver.islive = 1;
ngmsReceiver.noaud = 1;

/*
* Start the RTP receiver
*/
i = ngmslib_stream(&ngmsReceiver);

if (i!= NGMS_RC_OK)
{
__android_log_print(ANDROID_LOG_ERROR, "ngms", "ngmslib_stream failed with error %d", i);
ngmslib_close(&ngmsReceiver);
return -1;
}

return 0;
}

/**
* Stops the NGMS RTP capture service
*/
jint Java_com_example_ngmsclient_ExampleChat_ngmsStopReceiver (JNIEnv* _env, jobject _thiz)
{

/*
* Stop the RTP receiver
*/
ngmslib_close(&ngmsReceiver);

return 0;
}

/**
* NGMS Callback operation which blocks until a complete video frame has been received and decoded
*/
jint Java_com_example_ngmsclient_ExampleChat_ngmsReceiveFrame (JNIEnv* _env, jobject _thiz, jbyteArray frameBytes)
{
jstring str;

jboolean copy;
jbyte* buffer = (*_env)->GetByteArrayElements(_env, frameBytes, ©);
jsize max = (*_env)->GetArrayLength(_env, frameBytes);
int frameSize;

frameSize = ngmslib_readVidFrame(&ngmsReceiver, buffer, max, NULL);

(*_env)->ReleaseByteArrayElements(_env, frameBytes, buffer, JNI_ABORT);

return frameSize;

}

/**
* Starts the NGMS streaming service
*/
jint Java_com_example_ngmsclient_ExampleChat_ngmsStartSender (JNIEnv* _env, jobject _thiz, jstring remoteAddress)
{

char xcoderConfig[512];
char filter[512];
char destination[512];
const char *p;
int i;

/*
* Before doing anything call ngmslib_open to open the NGMS service
*/
i = ngmslib_open(&ngmsSender);

if (i!= NGMS_RC_OK)
{
__android_log_print(ANDROID_LOG_ERROR, "ngms", "ngmslib_open failed with error %d", i);
return -1;
}

/*
* Get the destination host string
*/
p = (*_env)->GetStringUTFChars(_env, remoteAddress, 0);

sprintf(destination, "rtp://%s:5004", p);

(*_env)->ReleaseStringUTFChars(_env, remoteAddress, p);

/*
* Customize the stream configuration parameters
*/
ngmsSender.output = destination;
sprintf(xcoderConfig, "vc=h264,vp=66,vb=250,vx=320,vy=240,vgmax=2000,vgmin=1500,vfr=15,vcfrout=-1,vth=1,vl=1,vsc=1,vf=2");
ngmsSender.strxcode = xcoderConfig;
sprintf(filter, "type=yuv420sp, ngmsSender.strfilters[0] = filter;
ngmsSender.inputs[0]= "/dev/dummyvideo";
ngmsSender.noaud = 1;

/*
* Start the RTP sender
*/
i = ngmslib_stream(&ngmsSender);

if (i!= NGMS_RC_OK)
{
__android_log_print(ANDROID_LOG_ERROR, "ngms", "ngmslib_stream failed with error %d", i);
ngmslib_close(&ngmsSender);
return -1;
}

return 0;
}

/**
* Stops the NGMS streaming service
*/
jint Java_com_example_ngmsclient_ExampleChat_ngmsStopSender (JNIEnv* _env, jobject _thiz)
{

/*
* Stop the RTP sender
*/
ngmslib_close(&ngmsSender);

return 0;
}

/**
* Encodes and transmits a single video frame using local RTP transport
*/
jint Java_com_example_ngmsclient_ExampleChat_ngmsTransmitFrame (JNIEnv* _env, jobject _thiz, jbyteArray frameBytes)
{

jboolean copy;
jbyte* buffer = (*_env)->GetByteArrayElements(_env, frameBytes, ©);
jsize size = (*_env)->GetArrayLength(_env, frameBytes);
int i;

i = ngmslib_onVidFrame(&ngmsSender, buffer, size);

(*_env)->ReleaseByteArrayElements(_env, frameBytes, buffer, JNI_ABORT);

return i;
}

We will create the makefile Android.mk which is used by the Android NDK to build our ngmsglue library.


#Example Android.mk Makefile

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= ngmsglue
LOCAL_SRC_FILES:= ngmsglue.c
LOCAL_C_INCLUDES:= ngms/include
LOCAL_LDFLAGS:= -Lngms/lib
LOCAL_LDLIBS:= -llog -lm -lngms -lxcode

include $(BUILD_SHARED_LIBRARY)

To build the ngmsglue.so shared library simply do the following.


cd [YOUR NGMSCLIENT PROJECT DIR]/jni
${ANDROID_NDK_HOME}/ndk-build

This should produce the output file [YOUR NGMSCLIENT PROJECT DIR]/libs/armeabi/ibngmsglue.so

You may need to manually copy the libraries ngms/lib/libngms.so and ngms/lib/libxcode.so into the libs/armeabi output directory because the contents of this directory will be automatically packaged into the project.apk application.

The Java Application Layer

The java application layer consists of the application level logic for the Android app we are building. To be able to utilize the native code from the previous section we will need to create a simple application using the Android SDK. This example demonstrates using the ExampleChat class which can be used by your own application to provide real-time interactive video streaming. It does not show all the steps necessary to create a complete Android video streaming application. An intermediate level Android developer should be able to complete the task by building upon and including the ExampleChat class in their full-blown application.

The ExampleChat class shown below is used to control the NGMS stream sender and the NGMS stream receiver. The method startSender can be called to begin streaming video from the native camera using the camera preview mechanism. Each video frame output by the camera is handed down to the NGMS API where it will be encoded and transmitted to the remote party using native RTP encapsulation. The method starReceiver can be called to begin receiving video from a remote instance of the same app. startReceiver launches a thread which performs a blocking poll for the next available received and decoded video frame. Together, these two methods can be used to establish a bi-directional video stream between two remote instances of the same app across a network.


/*
* ExampleChat.java
*
*/

package com.example.ngmsclient;

import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.PreviewCallback;
import android.graphics.ImageFormat;

public class ExampleChat
{
private boolean myReceiverRunning;
private Camera myCamera;
private PreviewCallback myCameraCallback;

/**
* Change this value to the destination where the video will be streamed
*/
private static final DESTINATION = "10.0.0.1";

/**
* method to initialize and start sending video from the local camera
*/
public void startSender () throws Exception
{

myCamera = Camera.open();

Parameters parameters = myCamera.getParameters();
parameters.setPreviewFormat(ImageFormat.NV21);
parameters.setPreviewFrameRate(15);
parameters.setPreviewSize(320, 240);

myCamera.setParameters(parameters);

/**
* Call the NGMS native method to perform streaming initialization
*/
ngmsStartSender(DESTINATION);

myCameraCallback = new PreviewCallback()
{
public void onPreviewFrame(byte[] frameBytes, Camera camera)
{
/**
* Call the NGMS native routine to encode and transmit the video frame
* to the remote destination using RTP transport.
*/
ngmsTransmitFrame(frameBytes);
}
}

myCamera.startPreview();
myCamera.setPreviewCallback(myCameraCallback);

}

/**
* method to stop sending video
*/
public void stopSender () throws Exception
{
ngmsStopSender();
}

/**
* method to start receiving remote video
*/
public void startReceiver () throws Exception
{

/**
* Call the NGMS native method to perform input initialization
*/
ngmsStartReceiver();

/**
* Start the thread which will poll for received video frames
*/
new Thread(myVideoFrameReceiver).start();

}

/**
* method to stop receiving remote video
*/
public void stopReceiver () throws Exception
{
myReceiverRunning = false;
ngmsStopReceiver();
}

/**
* Thread used to check for decoded video frames
* received by the NGMS native layer
*/
private Runnable myVideoFrameReceiver = new Runnable()
{
public void run()
{
/**
* Allocate a buffer to hold a video frame 320 x 240 pixels
* in RGB565 format, taking 16 bits (2 bytes) per pixel.
*/
byte[] frameBytes = new byte[ 320 * 240 * 2 ];
int size;
myReceiverRunning = true;

while(myReceiverRunning)
{
/**
* Block until a frame has been received and decoded by the native layer
*/
size = ngmsReceiveFrame(frameBytes);
if(size > 0)
{
/**
* The frameBytes array represents a video frame in RGB565 format.
* These bytes can be converted into a Bitmap object for display
* on the screen.
*/
}
}
}
}

/**
* Static initialization to load native libraries into address space
*/
static
{
System.loadLibrary("xcode");
System.loadLibrary("ngms");
System.loadLibrary("ngmsglue");

}

/**
* Define native method prototypes
*/
public native int ngmsStartReceiver ();
public native int ngmsStopReceiver ();
public native int ngmsReceiveFrame (byte[] frameBytes);

public native int ngmsStartSender (String remoteAddress);
public native int ngmsStopSender ();
public native int ngmsTransmitFrame (byte[] frameBytes);

}

Once you have integrated the ExampleChat class into your own Android project ensure that all three of the native libraries exist in the project /libs directory so that they will be included into your.apk output.


libs/armeabi/libngms.so
libs/armeabi/libxcode.so
libs/armeabi/libngmsglue.so

This example produces video output to the destination IP address 10.0.0.1. To successfully enable two clients to stream video bi-directionally you will need to change this IP address to match your remote client.

Conclusion

The above example demonstrates how to stream live video from the camera object in real-time and how to receive a remote live stream and extract each decoded video frame for display. The same process flow can be applied to add audio streaming in-order to create a complete video chat application. 


To view the Nex Gen Media Server (NGMS) Embedded API Guide go to http://ngmsvid.com/develop.php


How to Create a Successful Mobile Application

In the present mobile world, for any small business an application is important. However, a bad mobile application is no superior to having no application at all. It’s difficult to shake off the bad brand impression you will get for your app not created in a way that draws in clients.

To make a fruitful mobile application you have to follow a methodical way to deal with application development. We have explained 6 steps to make a fruitful mobile app development to enable you to out in this procedure.

Here are some steps to create an effective mobile app:

  1. An awesome imagination leads an incredible app:- Before you begin planning an application, you truly need an imaginative thought that will connect with the group of audience. As there are a few mobile applications officially accessible for mobile clients, thinking of a special niche is critical. It’s important that upcoming mobile application is vital, propels on another application, and resolves a specific issue. It is prescribed to do some market surveying to find a remarkable niche. Ensure you realize what you will offer before you begin building up an application.
  2. Keep it clear:- With regards to mobile apps, the simplicity plays an imperative part. On the off chance that your recently launched application is pressed loaded with superfluous features, you are probably going to not get wanted success. The final result of this kind of task will be a mobile application which isn’t simple for crowd to use with a few neglected features. Toward the end, most clients who attempt it will uninstall it soon. A few reviews have likewise revealed that the less demanding an application, the more clients will like it and make it more fruitful. Along these lines, try to launch a negligible reasonable application with basic yet inventive features, and see the reaction of clients. Afterward, you might have the capacity to build up an updated second version of the application, potentially with some energizing features.
  3. Native apps offer superior performance:- Remembering the theme of speed and accommodation, realize that native application development produces the best results in such manner.
  4. Have an application marketing technique:- Unfortunately, most entrepreneurs don’t focus on marketing that is a standout amongst the most critical parts of mobile application development process. It is very suggested that you begin making strong marketing processes in cutting edge. Each effective digital product has a well thoroughly considered marketing plan that encourages them get new clients. The marketing methods can run from PR to supported messages via social media, to PPC and past.
  5. Make use of the advance technology:- The universe of mobile changes quickly, so ensure your application won’t depend on out of date tech. In case if your application is outdated this converts into offering a more terrible mobile shopping experience than contenders. Make a point to connect with experts in the field who will inform you on the most recent developments expected to make a retail application successful.
  6. Plan your ongoing or user engagement:- When you launch your application, and it’s accessible to install from the app stores, you need a plan set up for drawing in with your clients. Applications offer magnificent opportunities for organizations to draw in with their clients, however this exclusive works if you design ahead of time how you will do this. Consider how to utilize push notification and execute your in-application messages. These must be applicable to your clients and keep them on your app. Remember your geo-fence tools either. These let you send area based messages to your clients, yet another reason behind why mobile power rules!

These are some important steps which should be considered while building up an application. If you want more help in creating a mobile application for your business, then contact the mobile app development company.


5 Mobile App Development Trends to Look Out for In the Recent Future

Today, the mobile device has emerged as a true friend in need, playing an important role in simplifying the routine tasks. We can’t deny the fact that the mobile technology is growing at a rapid pace and the mobile apps have become an integral part of the digital ecosystem. They are progressing to become omnipresent; so, staying up-to-date with the latest mobile app development trends has become an order rather than an option.

Below mentioned are a few mobile app development trends to look out for in the recent future:

1. Connection to Back-End Systems:

More and more users are demanding this feature quite often. And yes, it’s for the right reasons. Just imagine yourself sitting in front of a desktop computer looking for a product and you have to leave the house before you could finalize the order. You don’t have to worry if you have a mobile app as you can check out the offers on the go; but what if the app doesn’t have a shopping cart? This is where you feel that the app is useless. The app must be able to provide all the services as the desktop website; i.e. the apps must be connected to backend systems.

2. High Level Security:

People use mobile devices for various purposes like games, entertainment, business and what not!? We have apps for almost all the things today. But the question is – How safe the app is? Does it have a high level security? Nobody would want a game to access and spread their private and financial information. On the other side, if the app is so secure, it won’t function on a public Wi-Fi. So, balance is the only key. You just have to balance the security so as to ensure that the apps are safe to use.

3. Full Mobility:

The mobile development firms need to consider the full mobility of an app. While building an app, you need to think like – Is the app capable of replacing every single desktop operation or the users still have to use desktop computers for some actions? For example, if you want to build a text editing app, make sure you provide users with all the facilities. If you fail to offer any functionality like saving the doc in a compatible format, the app will be uninstalled undoubtedly. Basically, the main intention of full mobility is to provide all the facilities to users on their mobile so that they don’t have to depend on a PC for any information.

4. Enterprise and Consumer Apps:

Deciding between an enterprise app and a consumer app is really important; it actually depends on the amount of money you want to make. Generally, enterprise apps bring in a lot of cash when compared to the consumer apps. The reason behind this is that, people don’t bother to invest on the mobile experience especially when every paid app has an equivalent free app doing the same things. Also, the businesses are ready to pay a decent amount of money for the products that are going to be productive and efficient.

5. High Quality Content and Marketing Plan:

Unfortunately, the mobile app developers are forgetting the basic things like content and are focusing mainly on the technicalities. But this is not acceptable anymore; the users pay a great deal of attention on each and everything and they just want the right information. Building a marketing plan is yet another vital step that has to be considered while developing an app. After all, the developers build apps for monetary reasons. Having a proper marketing plan ensures great sales and popularity which in turn gets you a huge profit.

These are the five trends we can look out for in the recent future. Being updated with the latest development trends certainly helps you grow along with the organization.


8 Tools to A/B Test Your Mobile App

I really like performing A/B tests. Since I get a chance to test a number of elements and see how they add more value to the user’s experience.

I am sure you all are aware of the term A/B testing. It basically means to test different versions of a thing, to see which one is more efficient.

Testing is essential because it lets you know how users behave.

It is by testing that one is able to learn what works.

Why you should be A/B testing mobile apps?

Launching an app?

A/B testing provides the real answers to save time and launch your mobile app.

Ever wondered whether users like the blue or red background on the home screen? With A/B testing you can find out which elements appear attractive and perform better than others.

You can identify and test the in-app elements along with the app store pages to improve engagement.

Benefits of A/B testing a mobile app:

• A scientific method to optimize your mobile app

• Increased visibility in app store search

• Fine tune your app to deliver the best experience

• Boost in sales

• Rise in mobile app installs

List of Tools

Let’s look at the tools (by function) to help you perform better.

1) Optimizing App store page

• Splitmetrics

Splitmetrics lets you A/B test and optimize app store pages.

You can build and preview app store pages without any coding.

Create different images, play with colours, graphics and change the backgrounds.

The segmentation feature allows you to track the difference in conversions according to age and gender.

Splitmetrics also provides visitor’s behaviour in real time to help you understand how they click and scroll on your app page.

• AppRadar

App store optimization plays a crucial for marketing your app. AppRadar is helpful in optimizing your app store page.

AppRadar provides you with the keyword tracker tool to help you track your app’s performance in the store.

You can keep track of your competitors and find out where you can improvise.

It even integrates with Slack and email to daily reports and notifications.

AppRadar analyses the keywords used for your app to provide the insights and help you improve performance.

2) Acquiring new users

• Taplytics

Taplytics provides the tools to help you focus on the users. It lets you vary the content, look and feel to find out what resonates with the users.

With features like acquisition, engagement and retention analysis, Taplytics makes A/B testing easy.

You can also integrate it with Google Analytics to analyze the user behavioural pattern and get the best results.

It provides the behavioural trends, saving a time on iterations and experiment easily.

• AppsFlyer

Appsflyer is a mobile app marketing platform to track and optimize how users interact with an app. It is an official partner for Facebook, Google and Twitter.

You can attribute revenue to the source and which will help you focus on the profitable channels.

One of the features I like is the in- app events.

With this you can have in-app events sync with ad networks at no additional cost.

3) In-app user flow

• Firebase

You can build user segments and analyze their behaviour with Firebase.

The Crash reporting feature provides you with the report about how an app crash affects the users.

A single dashboard provides quick access to user data and campaign performance.

Link to AdWords in Firebase analytics to improve your ad targeting

and optimize your campaigns.

The Admob provides you with the monetization options, cross promote your apps and work with over 40 ad networks.

• Appsee

Appsee is a user experience and behaviour platform. It helps you understand how users interact with your app.

The session playback feature provides recording of users interaction with the app, letting you the problems they face.

With touch heat maps, you can see exactly which element the user clicks on.

Appsee detects unresponsive user actions such as taps and pinches to help you improve the UI of the app.

Using Appsee will help you retain users on the app and detect any shortcomings.

4) User retention

• Appannie

Track app performance, usage, downloads and revenue with Appannie.

It helps you provide app data to build the product strategies.

With Appannie you can monitor the user and their geographical locations to improve your strategy.

You can share the app data with the team to ensure whether the progress is on track.

Appannie provides automatic sales reporting from mobile app stores, so you can analyze what works and what doesn’t.

• UserTesting

UserTesting helps you provide videos of people who review an app or a website. This brings in the human element to your company, as users become informed and can take decisions easily.

By getting real insights about the user behaviour within a few hours you can create strategies for user retention.

You just need to select the app which the UserTesting participants will test.

You can even create tasks or scenarios which you would want the participants to perform to get the feedback.

Over to you

I have talked about a few tools here.

You need to test as many elements to bring in the users and then retain them on the app.


10 Must-Know Tips for Fabulous iOS Mobile Application Development

The demand for iOS apps has increased exponentially. Fortunately, there is no dearth of supply. Individuals and companies involved in the iOS mobile application development field are making their best effort to cope with the requirement. The submission of apps has increased exponentially from 32 apps/day in 2008 (debut year) to 1816 apps/day in 2015 (Ref: pocketgamer.biz). However, the app rejection rate at the App Store is quite high. Only half of the submitted apps get clearance by its review team. The strict guidelines of the App Store pound the substandard or low-quality apps in the interest of users.

Hence, an iOS app development company needs to evolve its practices and deliver quality apps to let users derive the most from the technology but with the least effort. This article is composed with an aim to give a clear guidance to iOS app developers regarding what works and what not. In addition to getting a quick approval, I expect this will also help them save their valuable time and effort.

Troubleshoot Crashes and Bugs

It’s the onus of the developer as well as the testing team to ensure that standard practices have been followed in the iOS mobile application development, and the app is free from all kinds of crashes and bugs. Users must have a control on the app, right from installation and uninstallation to update, upgrade, and usage. The App Store doesn’t approve non-public APIs in an app build. Nor does it allow submission of a demo, trial or test version. Beta Apps may only be submitted through TestFlight.

Fix Broken Links

Don’t make your app the house of broken links. Even if, your app makes way through the test, it won’t be able to last longer in the store as consumers will flood the store with negative reviews forcing the store to get it removed.

Say No to Place-holder Content

Don’t expect the App Store certification and user-adoption of the app, if you can’t keep a check on dummy content. Make sure that iPhone or iPad users are not plagued by your careless iOS app development approach.

Provide Proper Documentation

Let the App Store and the user know what the app is about. Give proper information regarding the tools applied, app usage, support, vendor contact and other vital information while make your way to the App Store.

Give the Right Picture

Add an easy-to-understand description and high-quality screenshots to make your target audience understand the app and its functionality. While doing so make sure you are honest, and portraying the right picture of your product.

Facilitate an Easy User Interface

Don’t let it to the user to analyze your app and tell you the mistake. Give them the right UI (user-interface) so that they can interact with the app and find the right information and services.

Balanced Advertisements

The advertisement is fine but not at the cost of user’s experience. Use the right size and type of container for the ad content to be placed so that the actual purpose of the app doesn’t get diluted.

Desist Serving Inappropriate Content

The App Store adopts a zero tolerance policy against inappropriate app content, including sexually abusive content, content erupting a sense of hatred or communal disparity, depicting violence, etc. The App Store is also particular about the user’s privacy. It declines apps asking for the user’s personal information, such as email address and date of birth to function. However, Apps meant for children fall in the exception list, they may ask for the user’s date of birth to comply with laws governing the children’s privacy.

Don’t Trick Users Divulging Location

Apps that don’t ask for the user’s permission before collecting, transmitting or using location data face rejection. Using location-based APIs for automatic or autonomous control of vehicles, aircraft, or other devices is also a violation of its terms.

Final Warning

Spamming here is an offense. An iOS developer or iOS mobile application development company must not upload multiple versions of an app on the store. Such apps suffer not just rejection, but may also lead to the termination of the developer’s account from the iOS Developer Program.

Original Source of App Submission Metrics: http://www.pocketgamer.biz/metrics/app-store/submissions/


Love Dogs? Check Out These Cool and Must-Have Dog Care Apps

Most of the dog lovers think of their pets as the parts of the family only. They took the utmost care of their dogs, feed them the best foods, love them unconditionally. Taking care of your dogs becomes absolutely easy when you have some effective mobile applications related to the dog care in your hand. If you visit the App Store or the Play Store, you would find a plethora of mobile apps related to diverse sectors making people's lifestyle much easier. Taking care of your dog is no exception to that. Here is a list of some must-have mobile apps for the dog lovers.

Today, worldwide, app developers are showing huge interest to build apps based on unique and creative ideas. If you have any such fresh app idea, you need to contact the right app development team as soon as possible to make your idea into a reality.

# 1 11Pets
Forgot the pre-scheduled dates of vaccinations, vet visiting of your dog? Well, no more worries. 11Pets is a feature-packed and compact pet care application that would help you to take better care of your pet's health. You can easily keep track of all the important dates like medication schedules, vet visits along with other events. You can keep a record of your pet's medical history like weight, temperature etc. in this app. In the pet gallery offered by this app, you can save your dog's images as well. 11Pets is available for free.

# 2 APCC
Every dog ​​lovers should get this application on their smartphones. This extremely useful app would give you a database of foods, plants, hazards, medicines, etc. that are harmful to your dog. In this way, you can save your dog from poisoning and take better care of the lovely member of your family. You can get this application without spending a single penny and moreover, you do not need to worry about the ads or in-app purchases. APCC is useful for not only dogs but for horses, birds and cats as well.

# 3 Dog Training
As the application name states, this app is for giving proper training to your dogs. Although most of the people have their own way, own style to train their pets, some ideas would always be helpful. Is not it? Dog Training app offers some effective tips and tricks along with some popular and easy training methods. Obviously, this application is not an alternative for the trained professionals. However, for handling the basic stuffs, Dog Training is a very effective app. You can get this application for free but that would contain ads.

# 4 PetCoach
Using this application, you can get veterinary advice for free. If your dog is not doing good, having health issues, you can easily search for the behaviors or symptoms on this PetCoach application. More interestingly, you can ask questions using this app and would get answers from pet nutritionists, vets, dog training experts. This effective pet care app is available for free.

Apart from all the above-mentioned pet care apps, Tractive GPS Pet Finder is a very good app choice. This would help you to get track of your lost dog or other pets. PetDesk is another impressive informational application for the dog owners.