Your address will show here +12 34 56 78
Android App Development, iOS App Development
By Colleen Nitta, Atimi Software Inc.


According to a recent Smart Insights study, 90% of consumers’ time spent on mobile devices is expended in mobile apps. Because of this proliferation in app usage, brands everywhere are rushing to create their own enterprise mobile apps, which often tend to fail due to bugs and other quality issues that could have been prevented if these apps had been put through proper quality assurance (QA) testing.


To help you better understand why quality assurance is crucial, we’ve put together this list of reasons why your enterprise app needs proper QA testing:


1. Preserve & enhance your brand’s reputation

In the same way that your website, staff, and marketing collateral speak to the quality of your brand, products and/or services, your app is another reflection of your business. If your app provides a subpar user experience, your brand image could be tainted in the eyes of your app users. Think of it like this: the quality of your brand can be equated with your app. If your app crashes or doesn’t function the way it should, users will complain about it in a public forum. The last thing you want to do is upset your users and have them vent their grievances in app store reviews or on social media. Bottom line: Keep your reputation strong so that more users will download your app and give it the positive engagement and reviews it deserves.

 



2. Prevent users from uninstalling your app

Did you know that, according to a recent Android Authority article, 77% of users never use an app again just 72 hours after they’ve installed it? Should your mobile app provide a poor user experience, it could wind up where thousands of apps have gone before – to the app graveyard where users uninstall or simply no longer engage with your app. If you don’t want your app to be abandoned by your users, it’s paramount that you have a process in place for thorough quality assurance – it’s crucial that you fix bugs and prevent them from popping up before your app launches in the app stores.


3. Increase app installations & engagement

Building on the previous point, if you have the right QA in place throughout your app’s development process, your app will run smoothly and provide an optimal experience for your users. And if that’s the case, you’re sure to foster app engagement, positive app store reviews, and a lift in new installations – all of which should be every developer’s goals. To restate point number one, having a high-performing app with a smooth user experience will help to bolster your brand in the eyes of consumers and other stakeholders.




4. Save cash in the long run

It’s important to keep in mind that developing an enterprise mobile app is an investment. You’re investing time and money into building an app that you hope everyone will love and use for a long time. While you may expect to receive a high return on your investment, this can and will not happen if your app fails due to low quality UI (user interface), unstable infrastructure, functionality and/or usability – issues like these will be more costly to your business than you can imagine for a number of reasons:

• App stores may penalize you, making you remove the app, fix the issues and then re-submit it for approval (which can take weeks in some cases – using up your developers time and your budget).

• As mentioned, users may get frustrated with your buggy app and vent on social media and in app store reviews, resulting in poor word-of-mouth, a reduction in new app installs, app engagement and overall perceived brand quality, which could hinder your business for years to come.

• It is far more expensive to find and fix bugs in an app later in the development process than it is to find and fix them in the early stages. As this Agile Modeling essay states, “the cost of fixing errors increases exponentially the later they are detected in the development lifecycle because the artifacts within a serial process build on each other.” In short, it is much wiser to have proper QA processes implemented right from the start of your app build. This way, you can rest assured that your app development partner will locate and resolve bugs earlier in the development process – saving you time and, potentially, exorbitant costs.


 



5. Decrease the threat of security-related issues

If you don’t run your app through thorough testing, you run the risk of compromising your users’ data security — and that PR nightmare is certainly not worth the risk! Be sure to have your QA team run tests on everything including basic things like app updates. Doing so will help to ensure that your users (and ultimately your brand’s reputation) are protected.




6. Reduce risk of future app problems

By having the right app QA and testing processes in place, you’ll significantly reduce the risk of experiencing issues with your app when it launches. By ensuring your mobile app functions the way it was meant to and provides a strong user experience from the get-go, you’ll be safeguarding your investment by preventing unnecessary developer “cleaning up” costs.

To further reduce the risk of app malfunctions, it’s highly recommended that you hire a QA specialist for a number of reasons, including the fact that a fresh set of eyes can help point out bugs that may not have otherwise been discovered by your in-house team.

Beyond the basic functionality and security testing on an app, QA specialists ensure apps run properly on all of the operating systems and devices that the app was intended for. Because of the broad range of devices (from the iPad Air, to iPhone 7, Google Pixel and more), you must consider the different environments that your app will be used in. Will your smartphone app work on all versions of an operating system (OS), such as Android or iOS? What about different devices with different screen resolutions/sizes? You could make it the responsibility of your developer to test your app across devices and platforms, but that’s not likely to be their skillset. In other words, your developer’s time is best spent developing, so it’s recommended that you engage with a QA specialist who is as enthusiastic about testing as they are efficient at it.



At Atimi Software, We specialize in extensive QA testing to help ensure that your app functions flawlessly and your mobile app users have an extraordinary experience. Atimi’s proprietary scripting tools deliver complete cross-platform automated testing for any platform, substantially increasing the amount of bugs we’re able to locate and fix.


Now that you know how important it is to incorporate QA testing when developing enterprise mobile apps, you may be interested in seeing what our quality assurance process looks like. To get a feel for how we work, or if you have any questions or want to learn more about Atimi and how our experts can work for you, feel free to give us a call. We’re always happy to chat.


778-372-2800


info@atimi.com

0

Android App Development, iOS App Development, mobile strategy
By Colleen Nitta, Atimi Software Inc.


So, you’ve recognized that there’s a need to build a mobile app for your business, but you’re not quite sure where to start in terms of seeking a mobile app development partner. There are a large number of app development partners out there from small boutique app development agencies to large-scale corporate firms (of course we want you to choose Atimi, but even if you don’t, you should at least know what to look for so you can find the right fit for you).


Here’s our list of the top considerations you should take when shopping for a mobile app development partner:


1. Agility

Much like in business, the competitive landscape in the app world is ever-changing and if you’re going to stay ahead of the curve, it’s paramount that the app development partner you choose is one who can stay nimble and adapt to your business’ changing needs. If your app development partner isn’t willing to negotiate on scope of work when necessary, they may not be the right partner for you. You need them to be mindful and understanding of the fact that things change and they should be more than willing to shift scope or focus as needed. Be sure to ask your potential vendors for an example of when something changed during development and how it was dealt with. This behavioural-type question will help you assess whether or not the company handles change well.

In addition to being flexible, you should look for an app development partner who has expertise and experience in working with different budget sizes and project processes – the last thing you want is a vendor who encourages sweeping changes to a project and runs wild with your budget.

 




2. Likability

Hiring a mobile app development partner is not a task to be taken lightly. Since apps require updates and maintenance from time to time to suit end user feedback, operating system updates, and more, the relationship you have with your app development partner doesn’t end once your app is released. Because this is not a short term relationship, you need to be sure that you and your team actually like the people you’re going to be working with. Just like you would consider culture fit when hiring a new employee, you should consider culture fit when hiring a mobile app development partner. For instance, if you’re company prides itself on professionalism and accountability, you certainly wouldn’t want to work with a vendor who is opposite to that.

At Atimi, we believe in open communication and collaboration. It’s important for us to keep our clients informed with scheduled status updates so that we ensure we’re all on the same page in terms of progress and priorities. We also believe strongly in holding one another accountable. These are just a few of the ways we keep our clients happy and in the know – every step of the way.




3. Engagement Capabilities

Think about how you and your team would like to be engaged in the app building process; do you want a developer and/or engineer to be on-site with your in-house team working alongside them (insourced), or would you prefer for everything to be outsourced (completely handled outside of your office)? Ask the app development partners you’re speaking with to run you through their process. If you want to be completely collaborative and hands on during app development, you may be better off hiring an app development partner who can provide that. You wouldn’t want a vendor coming in – not knowing what your business needs are – and being too overbearing or too underwhelming in their approach to app development, so be sure to find a partner who offers custom engagement, the way that we do at Atimi. We understand that each and every client and project has unique needs. That’s why we’ll work on or off-site and inject our expertise into your in-house development team, stand them up, and get the project completed on time and on budget.


4. Proven Success

Key point: Just because they say they’re awesome doesn’t mean they are. Do your due diligence before hiring an app development partner; when you’re in a meeting with a potential vendor, ask them to provide you with examples of apps they’ve developed – you may even go so far as to download those apps to get a feel for the overall user experience they provide. If they’re good, great! If not, move on and continue your search. Additionally, ask about the developer’s professional experience. It’s important to know that whichever app development partner you choose has experience building apps across mobile platforms and devices. In addition to finding an app development partner who has experience and a strong portfolio, you should consider finding a vendor who partners with popular operating systems, such as Apple. At Atimi, we’re proud to be an Apple Mobility Partner. We’ve been a part of the AMP program since the first iPhone launched and the opening day of Apple’s App Store. Not to toot our own horn, but we’re one of a select few of Apple Mobility Partners in North America.





5. Business Savvy & Client Focused

Sometimes, IT people don’t speak the same language as the business execs, which can be challenging when deciding on app features and functionality. Because of this, it’s of utmost importance that you find a mobile app development partner who communicates effectively and understands that, at the end of the day, you’re running a business and your app needs to accomplish specific business objectives. This type of business-savvy partner will help ensure a smooth app development process for everyone involved – sans miscommunications and headaches.

At Atimi, we understand that you have important business goals and KPIs, so we keep you, your end users’ experience and your bottom line at the forefront of everything we do.





6. Quality Assurance

This is a piece that often gets left out of these types of articles, but it should be one of the key things to consider when hiring a mobile app development partner. Without proper quality assurance (QA), your app is destined to fail. As mentioned in a previous Atimi Blog post, user experience is everything. You must provide your users with a seamless, extraordinary experience if you want your app to be successful. If your app isn’t regularly and thoroughly tested, you could find your users frustrated and annoyed, giving you poor reviews in the app stores and uninstalling your app altogether – not a road you want to go down.

At Atimi, our robust QA process ensures that your app features remarkable functionality. Our proprietary scripting tools deliver complete cross-platform automated testing, substantially increasing the amount of bugs we’re able to find and remedy. We take pride in our work and do everything in our power to ensure the mobile app we develop for your business provides your users with a stunning user interface and experience.


Hopefully you will find this useful. If you have any questions or want to learn more about Atimi and how our experts can work for you, feel free to give us a call. We’re always happy to chat.


778-372-2800


info@atimi.com

 

0

Android App Development
By Mike Woods, Atimi Software Inc.

Like me, you’ve probably searched online for a navigation drawer solution that doesn’t require a third-party library. When developing apps, we’re always wary about adding extra dependencies, and in this case, the libraries available don’t even mimic all navigation drawer features.

This tutorial shows you how to modify the navigation drawer so it moves the window’s content when it opens and closes. We will modify Google’s sample app with around 10 lines of code to add this functionality.


Implementation

Begin by loading the sample app. We’ll add code directly to these files to illustrate the technique. http://developer.android.com/training/implementing-navigation/nav-drawer.html
Since the action bar will be moving over when the drawer opens and closes, the drawer needs to claim the area under the action bar. This is achieved by making the action bar an overlay so the window lays out the content to its full height. Any changes to the code are highlighted in yellow. Set the window’s flag inside the Activity.java file. It must happen before super.onCreate() and can alternatively be set in the manifest.xml, if you prefer.

    @Override
     protected void onCreate(Bundle savedInstanceState) {

        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

	    // for v7support use: supportRequestWindowFeature
	    super.onCreate(savedInstanceState);
	    …
    }


The obvious drawback of the action bar overlay is that it now overlaps the window’s content.  While we want the drawer to extend the height of the window, we still want the other content to fit below the action bar. To make it look normal again, set a top padding on the layout. I prefer keeping a ‘host’ layout with this setting and then adding and removing child layouts with ‘match parent’ attributes. activity_main.xml will look something like this (modified from the Google sample project):

    <!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for 
    both width and height to consume the full space available. -->
    <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- As the main content view, the view below consumes the entire
         space available using match_parent in both dimensions. -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
	    android:paddingTop=“?android:actionBarSize">

	<!-- (for v7 support use:  android:paddingTop=“@dimen/abc_action_bar_default_height_material”) -->

    <!-- android:layout_gravity="start" tells DrawerLayout to treat
         this as a sliding drawer on the left side for left-to-right
         languages and on the right side for right-to-left languages.
         The drawer is given a fixed width in dp and extends the full height of
         the container. A solid background is used for contrast
         with the content view. -->
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>
        </android.support.v4.widget.DrawerLayout>


In order to be notified when the drawer is moving, and how far it has moved, add a callback method from the Android API. The sample app illustrates onDrawerOpen() and onDrawerClosed() but there are additional methods available. Add the onDrawerSlide() method in MainActivity.java within the anonymous class defined by ‘mDrawerToggle’. This portion of the file will then look like this, with the added changes in bold:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    …

        // ActionBarDrawerToggle ties together the proper interactions
        // between the sliding drawer and the action bar app icon
        mDrawerToggle = new ActionBarDrawerToggle(
                this,                  /* host Activity */
                mDrawerLayout,         /* DrawerLayout object */
                R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
                R.string.drawer_open,  /* "open drawer" description for accessibility */
                R.string.drawer_close  /* "close drawer" description for accessibility */
                ) {
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(mDrawerTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
     /**
     * {@link DrawerLayout.DrawerListener} callback method. If you do not use your
     * ActionBarDrawerToggle instance directly as your DrawerLayout's listener, you should call
     * through to this method from your own listener object.
     *
     * @param drawerView The child view that was moved
     * @param slideOffset The new offset of this drawer within its range, from 0-1
     */
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);
            }
        };

      …
     }


To know where to put the window’s content, we can find the visible width of the drawer by treating ‘slideOffset’ as a percentage. The edge of the drawer is the x-location for the window’s content.
    
    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
	    super.onDrawerSlide(drawerView, slideOffset);

        float xPositionOpenDrawer = mDrawerList.getWidth();
        float xPositionWindowContent = (slideOffset * xPositionOpenDrawer);
    }


There are two things to move with the drawer: the layout and the action bar. To move the layout, create a reference in MainActivity to the FrameLayout (i.e., ‘content_frame’) defined in activity_main.xml. For example:

mHostFragment = findViewById(R.id.content_frame);


Then we can change its position during drawer movement.
    
    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
	   super.onDrawerSlide(drawerView, slideOffset);

   	   float xPositionOpenDrawer = mDrawerList.getWidth();
      float xPositionWindowContent = (slideOffset * xPositionOpenDrawer);
	   mHostFragment.setX(xPositionWindowContent);
    }


The final ingredient is to move the action bar. This requires accessing its associated view, which unfortunately is not straightforward, but is simple enough. This helper method within MainActivity does the trick on 4.0 and above:

    /** (For supporting ActionBarActivity, define packageName as:
    packageName = getActivity() instanceof ActionBarActivity ? 					
    getActivity().getPackageName() : “android"; 
    */

    public View getActionBarView() {

        Window window = this.getWindow();
        final View decorView = window.getDecorView();
        final String packageName =  "android";
        final int resId = this.getResources().getIdentifier("action_bar_container", "id", packageName);
        final View actionBarView = decorView.findViewById(resId);
        return actionBarView;
    }


Now the action bar can be moved with the content:
    
    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
	   super.onDrawerSlide(drawerView, slideOffset);

	   float xPositionOpenDrawer = mDrawerList.getWidth();
       float xPositionWindowContent = (slideOffset * xPositionOpenDrawer);
	   mHostFragment.setX(xPositionWindowContent);
	   getActionBarView().setX(xPositionWindowContent);
    }


In Conclusion

The notable modifications are overriding onDrawerSlide() and making the action bar an overlay. Notice that providing v7 support requires changing the call name of some methods. In development, you can put all this logic into its own Fragment class outside the activity. In doing this, you would also move the ListView in activity_main (‘left_drawer’) into the new fragment, and replace it with a reference. activity_main.xml will then look something like this:

    <android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
		  android:paddingTop="?android:actionBarSize">

      <fragment android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="com.yourapp.NavigationDrawerFragment"
        tools:layout=“@layout/layout_with_listview_for_this_fragment” />
        </android.support.v4.widget.DrawerLayout>


If you have any questions or want to talk more about navigation drawer tips and tricks, give us a call. We’re always happy to chat!

778-372-2800


info@atimi.com

 


 

 
Twitter
 
LinkedIn
 
Facebook
 
Google

 
0

NO OLD POSTSPage 2 of 2NEXT POSTS
Scroll Up