May 29, 2015

How to release a Mac app: 4. Development.

Needless to say, developers absolutely love to work on projects with completed workflow and visuals. You will get almost perfect estimate, if the prototype is alive and contains all graphics and states which should be programmed into the app.

When the product exists on paper, development will take less time. Still there are many things involved, including the following resource-consuming tasks:

  • Developer Program. Even if you plan to distribute the app without the Mac App Store, you need to have an official Apple Developer account which costs $100 per year. This allows to release an app signed by the Developer ID, which will be automatically permitted to launch on any Mac.

  • Coding. Creating a project, designing its architecture, configuring unit tests and coding in Xcode or AppCode may take a while depending on the project and release type. Fortunately, we have open source solutions: CocoaPods and Carthage save quite much time nowadays.

  • SVC. Source version control systems like git must be configured from the very beginning. Both the product owner and the developer should have access to the same project in GitHub or BitBucket. The good code base should have a well-maintained repository with full history to help teammates in the future.

  • Signing. Once you have become an Apple Developer, created a project in Xcode, and prepared your working environment, it is a good idea to configure signing using Apple certificates and try to launch the signed app in Release mode. Provisioning is not a cake, especially when your app is sandboxed.

  • Sandboxing. If your app is intended for the Mac App Store, it must be sandboxed. The thing is that Sandbox environment has limitations and influents on the architecture. You may need XPC for network operations or special permissions for integration with other apps in the system etc.

  • AppleScript. If your app is targeted for advanced users, consider AppleScript support. Mac apps do not provide this by default, so you may spend additional time and efforts.

  • iCloud. Apple Cloud is available only for Mac App Store apps. If you have an iPhone counterpart and want to provide Sync, or if there is no Mobile version, but you still want to provide Sync, add 35-45% to development costs. Proper sync implementation is very hard even if you choose Dropbox or Parse as a backend.

  • Undo. It is expected on Mac that any app should support Undo and Auto Save for Documents. This kind of development is not as hard as Sync, but still takes time. Make sure to support Undo and Redo from the very early releases, because adding it later will be more expensive.

  • Services. OS X has support for Services in contextual menus. For example, you can select a piece of text or an image and right-click it to see the list of available actions. You may consider to add such integration into your app to improve its usefulness for users.

  • Help. To make the best app, take care about all the tooltips, accessibility and contextual help buttons with references to the local Help Book. Testing and development will take more time, but this is what makes your app truly native on OS X.

Depending on a project, development takes 40-80% of time, and in fact it never ends because of Bug Fixing. In the next post we talk about Beta Testing.

No comments:

Post a Comment