Posts tagged iPhone development
Key inputs to avoid Apple’s iOS app rejection
Apr 17th
An app idea or product app takes much of time and money investment to get into app world existence. The major hurdle to it’s success could be Apple’s review process. There can be numerous reasons for Apple’s rejections for your app. With our superior knowledge of iOS apps development since the day Apple launched their SDK, we are able to gain valuable insights into Apple’s review process.
This will help:
1. Developers to save their precious time and efforts.
2. Let you plan for a better user experience which is the key reason behind all the app store guidelines.
There are few key points which every iPhone/iPad developer should know when developing an app for Apple devices.
Key things to avoid Apple’s app rejection:
1. Bugs/Crashes- The most common reason for any app to get rejected are freezing and frequent crashes. Make sure you test it on multiple devices, different OS versions and specifically under varying network conditions. Peer-to-peer reviews/testing done by developers would certainly help. If your app crashes or doesn’t respond during the app review by Apple’s testing team then it will definitely be rejected.
2. Code Download- You cannot create an app that downloads and executes code that was not present in the app bundle submitted to Apple.
3. Similar Icons- The app store 512×512 icon should be same as the app’s 57×57 icon. Even though there is no such direct rule in contract/agreement with Apple, its their store and they make the rules for reviews. If your app’s icon on phone and app store icon do not match, Apple will state having un-matching icons to reject the app.
4. Network Connectivity- You must notify the user if network is unavailable. Just having the spinning busy icon display and a message saying “trying to connect” is against the guidelines. Proper message is needed at all the screens to convey clear message if network is not available after certain period of time. Many developers put their connectivity checks on Apple’s Reachability code, which is using that sample code for the wrong purpose. If you need to get data from a specific server, then try to download some data from that domain.
5. “Free+Paid” apps- Apple reported to few developers that app may get rejected, if it contains visually disabled buttons, prompting the user to upgrade for the full version or displaying the price of full version in the Free version. So, iPhone developers must ensure that they follow all the rules.
6. Consistent Button Images- If an iPhone developer wants to use Apple’s existing image for his button then see that functions are identical because you can use a standard button in a non-standard way if your app is providing a “immersive environment” so it is better to create your own button. If there are any variations with function then again Apple might reject the app.
It is always advisable for an iPhone developer to use their own custom buttons in the app
7. iOS version support- If you plan on submitting and app which runs with 3.0 and higher versions, you should be sure that it works perfectly on all the versions from the iOS 3.0 to the most current version. Apple will test it with the latest version to see the potential of the app but if the app fails to prove itself Apple will definitely rejected your app.
8. Transactions outside The App Store-
Apple do not allow developers to conduct any transaction/business outside the app store. In App purchases are the recommended way to implement these transaction. Recent announcement to allow outside payment transaction with certain restriction and Apple’s percentage take from money for the same is trickier and would take more time to settle down in business plan of apps sale.
9. Private API:s
Apple strictly reject apps which are implementing programs using Private APIs. Apple has scripts that can scan your app codes for violations. If you want to prevent app rejection from app store make sure you read the developer guidelines carefully before implementing any API marked private by Apple.
10. Popovers-
It is definitely not recommended to launch one popover from within another popover. The iPad Human Interface Guidelines clearly provides this information that only one popover element should be shown onscreen at a time.
There can be many more reasons behind Apple’s rejection of any iOS app. However, the list provides very obvious ones.
Mobisoft Infotech sincerely wish this post is helpful to all our developer community and prestigious clients to achieve great success with iOS apps launch.
If you have any suggestions/feedback, please send your inputs to info@mobisoftinfotech.com
& for business enquiries : business@mobisoftinfotech.com
Thank you
iPhone Open Source Applications
Jan 14th
Howdy Everyone..
Here is a Consolidated List of Few iPhone Open Source Applications we came across having interesting, useful and commonly used features that can be reused for Developing Enterprise Level iPhone Applications.
1. openURL helps you launch Maps, SMS, Browser, Phone, and even other applications.
- Learn basic protocols supported natively by the phone.
Details:
http://www.appsamuck.com/day3.html
2. What is the IP of your iPhone? You may working with a friend or family member and typically you would have them use IPConfig or website to return the IP, however it isn’t that simple on the iPhone.
- Steps to Building you first iPhone app
Details:
http://www.appsamuck.com/day4.html
3. Reaction Time
Do you know what your reaction time is? Mean RT is approximately 180 to 200 milliseconds to detect visual stimuli.
- Format strings and work with UIAlertView.
- Use NSTimer objects to create timers.
- How to use the random() function.
Details:
http://www.appsamuck.com/day6.html
4. This is a simple application with a very cool effect. It allows users to load the Flickr KML file in to Google Maps on the iPhone. This will show push pins on the map for photos that have been recently geotagged on Flickr.
- Learn how to have code run before your application really begins by using the awakeFromNib event.
- Learn more about “Utility Applications” for iPhone with XCode.
- Learn how to call Google Maps from your application.
Details:
http://www.appsamuck.com/day8.html
5. This is a simple application with a very cool effect. It renders a dynamic snow shower with a single flake image.
- Call use animations in your application.
- Timer and random number generator.
- Quartz animations.
Details:
http://www.appsamuck.com/day9.html
6. Where Am I!
Most of us know where we are at any given moment. But few of us know our exact longitude, latitude, and altitude.
- GPS access to longitude, latitude and altitude.
- Event delegates.
- “Utility Applications” for iPhone with XCode.
Details:http://www.appsamuck.com/day10.html
7. Are your walls straight in your house? A plumb-bob or a plummet is a weight with a pointed tip on the bottom that is suspended from a string and used as a vertical reference line.
- Basics of using the Accelerometer.
- Use of UIImage, UIImageViews, and Rotation Transforms
Details:
http://www.appsamuck.com/day11.html
8. Enjoy everyone’s favorite mobile search engine without the Navigation bar and the toolbar.
- How to embed resources into a UIWebView (very useful for embedded help files).
- Enable user interaction.
- Navigate to a mobile web site.
Details:
http://www.appsamuck.com/day13.html
9. Rain, rain, go away, will it come back another day? ZipWeather allows you to look up weather conditions by ZIP Code.
- Basics of downloading data with NSURLConnection.p
- More use of the UIWeb View.
Details:
http://www.appsamuck.com/day15.html
10. World Tour is an iPhone application that will help you keep track of when the iPhone Tech Talk World Tour is coming to town.
- How to use opacity with images.
- Use of rotation transformations.
- Create “animation wallpaper” and tile images.
Details:
http://www.appsamuck.com/day16.html
11. Homeland Security Advisory System is an iPhone application that will alert you to US Department of Homeland Security Advisories.
- Basics of downloading data with NSURLConnection.
Details:
http://www.appsamuck.com/day18.html
12. Wondering why your ears are popping? Mobile Altimeter allows you to track your altitude.
GPS access to altitude information.
Details:
http://www.appsamuck.com/day19.html
13. LavaFlow is an iPhone application that plays a seamless looping video. This creates an entertaining “screen saver” like effect.
- Use of MPMoviePlayerController.
- More about “Utility Applications” for iPhone with XCode.
- How to loop a video
Details:
http://www.appsamuck.com/day26.html
14. iPhone face detection Application
Details:
http://github.com/beetlebugorg/PictureMe/
15.MobileMe A MobileMe web scraper that exposes Apple’s Find My iPhone service to the command line. This allows you to programmatically retrieve your phone’s current location and push messages (and an optional alarm) to the remote device.
Details:http://github.com/tylerhall/sosumi/
16. SpyPhone
This project shows the kind of data a rogue iPhone application can collect.
Details:http://github.com/nst/SpyPhone/
17. WordPress for iPhone
Details:http://iphone.wordpress.org/
18. Star Rating components for iPhone like in AppStore or Youtube
Details:http://code.google.com/p/s7ratingview/
19. S7GraphView
Details:http://code.google.com/p/s7graphview/
20. Mover
- Add a photo, video or contact to Movers table?
- Then slide it off the edge of the screen with a flick.
- Mover will transfer it to an iPhone near you, connected via Wi-Fi or Bluetooth.
Details:http://apps.open-libraries.com/mover/
21. NatsuLiphone
NatsuLiphone is a simple Twitter client for iPhone/iPod touch.
It’s based on NatsuLion for Mac OSX.
Its goals are the follows:
- Easy to use for Twitter light users
- Handy for mobile usage
Details:http://iphone.natsulion.org/
22. google-reader-iphone-sync
- Sync your google reader items with your iPhone for offline viewin
Details:http://github.com/gfxmonk/google-reader-iphone-sync
23. AppSales-Mobile
App Sales Mobile allows iPhone developers to download and analyze their daily and weekly sales reports from iTunes Connect
Details:http://github.com/omz/AppSales-Mobile
24. HP Calculator Emulator for the iPhone
HP Calculator Emulator for the iPhone
Details:http://code.google.com/p/hpcalc-iphone/
25. iphone-google-maps-component
A component that you can add to your iPhone application to access all basic features of Google Maps (similar to Android’s MapView). It uses a UIWebView in the background to load the HTML/Javascript version of Google Maps, and offers a set of Objective-C methods that mimic a subset of the original Javascript methods for controlling the map. It currently supports setting the center location and zooming & panning using the touch interface.
Details:http://code.google.com/p/iphone-google-maps-component/
26. ZXing :Multi-format 1D/2D barcode image processing library with clients for Android, Java
ZXing (pronounced “zebra crossing”) is an open-source, multi-format 1D/2D barcode image processing library implemented in Java. Our focus is on using the built-in camera on mobile phones to photograph and decode barcodes on the device, without communicating with a server. We currently have production-quality support for:
- UPC-A and UPC-E
- EAN-8 and EAN-13
- Code 39
- Code 128
- QR Code
- Data Matrix (‘alpha’ quality)
- PDF 417 (‘alpha’ quality)
- ITF
Details:http://code.google.com/p/zxing/
27. TouchCode - JSON, XML parsers and more for iPhone
- TouchCode is a repository of iPhone and iPod Touch source code, including TouchJSON, TouchXML and more:
- TouchJSON is parser and generator for JSON implemented in Objective C.
- TouchXML is a lightweight replacement for Cocoa NSXML cluster of classes. It is based on the commonly available Open Source libxml2 library.
- TouchHTTPD is a Cocoa HTTP server designed to be embedded in Cocoa applications.
28. Text-to-Speech (TTS) C libraries for iPhone
Details:http://wiki.monotouch.net/HowTo/Interop/Interopping_with_Open_Source_Text-to-Speech_%28TTS%29_C_libraries__for_iPhone.
29. Iwebkit
Iwebkit is the revolutionnairy kit used to create high quality iPhone and iPod touch websites in a few minutes and is based on an LGPL license. In the first 4 months of it’s existance the pack has greatly evolved from a basic idea to a project that has reached worldwide fame!
iWebKit is a file package designed to help you create your own iPhone and iPod Touch compatible website or webapp. The kit is accessible to anyone even people without any html knowledge and is simple to understand thanks to the included tutorials. In a couple of minutes you will have created a full and profesional looking website.
Details:http://www.iwebkit.net/
Hope some of them Help..!!
Keep peeping for new additions on the list!!
iPhone Open Source libraries
Jan 13th
Hello to all iPhone Developer Community Buffs!! Here is a consolidated list of the few frequently used and useful Open Source Libraries. Why waste time in coding when something is already implemented!
Libraries:
1. Three20
Three20 is a collection of iPhone UI classes, like a photo viewer, and general utilities, like an HTTP disk cache. Here is the list of components available in Three20
Photo Viewer
TTPhotoViewController emulates Apple’s Photos app with all of its flick ‘n pinch delight. You can supply your own “photo sources”, which works similiarly to the data sources used by UITableView. Unlike Apple’s Photos app, it isn’t limited to photos stored locally. Your photos can be loaded from the network, and long lists of photos can be loaded incrementally.
Message composer
TTMessageController emulates the message composer in Apple’s Mail app. You can customize it to send any kind of message you want. Include your own set of message fields, or use the standard “To:” and “Subject:”. Recipient names can be autocompleted from a data source that you provide.
Web image views
TTImageView makes it as easy to display an image as it is in HTML. Just supply the URL of the image, and TTImageView loads it and displays it efficiently. TTImageView also works with the HTTP cache described below to avoid hitting the network when possible.
Internet-aware table view controllers
TTTableViewController and TTTableViewDataSource help you to build tables which load their content from the Internet. Rather than just assuming you have all the data ready to go, like UITableView does by default, TTTableViewController lets you communicate when your data is loading, and when there is an error or nothing to display. It also helps you to add a “More” button to load the next page of data, and optionally supports reloading the data by shaking the device.
Better text fields
TTTextEditor is a UITextView which can grow in height automatically as you type. I use this for entering messages in Facebook Chat, and it behaves similarly to the editor in Apple’s SMS app.
TTPickerTextField is a type-ahead UITextField. As you type it searches a data source, and it adds bubbles into the flow of text when you choose a type-ahead option. I use this in TTMessageController for selecting the names of message recipients.
HTTP disk cache
TTURLRequest is a replacement for NSURLRequest which supports a disk cache (NSURLRequest can only cache in RAM). It has some other nice features too. HTTP posts are as easy as supplying a dictionary of parameters. The TTURL loading system can also be suspended and resumed at any time, which is a great performance helper. Network threads often fight with the UI thread, so you can suspend the network any time your app is momentarily graphically intensive.
URL-based Navigation
TTNavigationCenter is for those grizzled old web developers like myself who want to organize their app by “pages” which can be displayed by visiting a URL.
Your view controllers can simply register URL patterns that they handle, and when those URLs are visited the controllers will be created and displayed. You can also register generic actions that are called when a URL is visited.
TTNavigationCenter also persists and restores the full path of navigation controllers and modal view controllers, so your users can quite the app and come back exactly where they left off.
More details on:
http://github.com/facebook/three20
2. MajicRank 1.3
Here is a list of the features that this version, 1.3 adds:
* Adds historical graphs
* Stores all archives by AppID
* Reduces file size of stored archives
* Allows entering AppID with search preference over name
* Auto detects and fills in app ID when app name is entered
* Allows re-ordering of apps list
* Fixed a bug where deleting an app while editing it’s title caused a hang
* About box allows resizing, should now be viewable on low-res displays
* Adds latest date run to status text when update is complete
More details on:
http://148apps.biz/majicrank-13-released-adds-historical-graph/
3. Facebook connect Library for iPhone
* Seamlessly connect their Facebook account and information with your iPhone app
* Connect and share experiences with friends who also use your iPhone app
* Share user information and actions on your iPhone app with friends on Facebook
Details:
http://developers.facebook.com/connect.php?tab=iphonehttp://wiki.developers.facebook.com/index.php/Facebook_Connect_for_iPhone
http://wiki.developers.facebook.com/index.php/Facebook_Connect_for_iPhone
4. MGTwitterEngine ‚ Twitter from Cocoa
MGTwitterEngine is an Objective-C class which lets you integrate Twitter support into your Cocoa application, by making use of the Twitter API. The entire API is covered, and appropriate data is returned as simple native Cocoa objects (NSArrays, NSDictionarys, NSStrings, NSDates and so on), for very easy integration into your own application.
More details on:
http://mattgemmell.com/2008/02/22/mgtwitterengine-twitter-from-cocoa
5. Route Me
A slippy map library for the iPhone.
Fast! Completely written in objective-c using CoreAnimation. Runs like the built-in app.
More Details on:
http://code.google.com/p/route-me/
6. Core Plot
Core Plot is a plotting framework for Mac OS X and iPhone OS. It provides 2D visualization of data, and is tightly integrated with Apple technologies like Core Animation, Core Data, and Cocoa Bindings.
More details on:
http://code.google.com/p/core-plot/
7. RegexKitLite
This document introduces RegexKitLite for Mac OS X. RegexKitLite enables easy access to regular expressions by providing a number of additions to the standard Foundation NSString class. RegexKitLite acts as a bridge between the NSString class and the regular expression engine in the International Components for Unicode, or ICU, dynamic shared library that is shipped with Mac OS X.
* Uses the regular expression engine from the ICU library which is shipped with Mac OS X.
* Automatically caches compiled regular expressions.
* Uses direct access to a strings UTF-16 buffer if it is available.
* Caches the UTF-16 conversion that is required by the ICU library when direct access to a strings UTF-16 buffer is unavailable.
* Small size makes it ideal for use in iPhone applications.
* Multithreading safe.
* 64-bit support.
* Custom DTrace probe points.
* Support for Mac OS X 10.5 Garbage Collection.
* Uses Core Foundation for greater speed.
* Very easy to use, all functionality is provided by a category extension to the NSString class.
* Consists of two files, a header and the Objective-C source.
* Xcode 3 integrated documentation available.
* Distributed under the terms of the BSD License.
More details on:
http://regexkit.sourceforge.net/RegexKitLite/
8. CHDataStructures.framework
is an open-source library of standard data structures which can be used in any Objective-C program, for educational purposes or as a foundation for other data structures to build on. Data structures in this framework adopt Objective-C protocols that define the functionality of and API for interacting with any implementation thereof, regardless of its internals.
Apple’s extensive and flexible Cocoa frameworks include several collections classes that are highly optimized and amenable to many situations. However, sometimes an honest-to-goodness stack, queue, linked list, tree, etc. can greatly improve the clarity and comprehensibility of code. This framework provides Objective-C implementations of common data structures which are currently beyond the purview of Cocoa.
The abstract data type protocols include:
* CHDeque
* CHHeap
* CHLinkedList
* CHQueue
* CHSearchTree
* CHSortedSet
* CHStack
The concrete subclasses of NSMutableDictionary include:
* CHLockableDictionary
* CHOrderedDictionary
* CHSortedDictionary
The concrete subclasses of NSMutableSet include:
* CHLockableSet
* CHOrderedSet
The concrete subclasses of CHLockableObject (which don’t have a protocol) include:
* CHMultiDictionary
More Details on:
http://dysart.cs.byu.edu/CHDataStructures/
9.ResKit
A library for testing resolution-independent iPhone OS applications.
ResKit simulates varying device screen sizes by resizing and moving your application’s main window. It supports scaling down the simulated device so more of the screen can be seen at once.
Details:http://github.com/jtbandes/reskit/
10.Sintaxi/PhoneGap
PhoneGap is a development tool that allows web developers to take advantage of the core features in the iPhone, Android, BlackBerry, and Symbian with a unified JavaScript API
API
Device
Exposes properties of the phone, such as its device ID, model, and OS version number.
Location
Gain access to the Latitude / Longitude of the device, and depending on the type of device, the course, speed, and altitude.
Accelerometer
Monitor the accelerometer on the device to detect orientation, shaking and other similar actions.
Contacts
Query the phone addressbook to read the users contacts.
Orientation
Read the device layout orientation, e.g. landscape vs portrait.
Camera
Brings up the camera or photo browser on the phone to allow the user to upload a photo.
Vibrate
Triggers the vibration alert on the phone, if it is supported.
Sound
Play sound files (WAV, MP3, etc).
Telephony
Trigger and activate phone calls.
Details:http://github.com/sintaxi/phonegap/
11.Askit Framework
ASKit is an easy to use library for your iPhone applications. ASKit provides AppStore styled table views
ASKit Overview
- ASTableViewController: Instead of subclassing UITableViewController, you’ll subclass ASTableViewController. This is where most of the work is done.
- ASTableViewCell: This replaces UITableViewCell
- ASHeaderView: Provides the gradient header that you can find when viewing a single app in AppStore
- ASFooterView: This is the footer that AppStore shows your iTunes account in.
- ASInfoCell This extends ASTableViewCell and should be used for various information messages such as “No Items” and “Loading” (it also contains an activity indicator for loading messages
- ASSectionHeaderView: This is for table sections, you must return a view when using ASKit and not a string, otherwise it you won’t have the correct theme.
- ASTableViewCellLabel: Use this instead of UILabel while adding to an ASTableViewCell so the shadows are handled correctly when a cell is selected
Details:http://github.com/enormego/askit/
12.ElementParser
ElementParser is lightweight Cocoa Framework (usable on the iPhone) to provide easy access to XML and HTML content.
Details:http://github.com/Objective3/ElementParser/
13.InAppSettingsKit
This iPhone framework allows settings to be in-app in addition to being in the Settings app
Details:http://github.com/futuretap/InAppSettingsKit/
14.Accelerometer-Helper
Accelerometer utilities for iPhone, including trigger sensitivity and time lockout between events
Hope it helps few, if not all of the aspiring iPhone developers.
The list will be updated as and when we encounter a new useful Open source library!
So keep Track.
Any addition to the list is Welcome!!
Getting Started to the START!!
Dec 7th
For doing anything Big, important thing is to start…and here is one thing you all can try to overcome the fear of getting started for iPhone development.
A traditional “Hello World” Application.Same thing told differently!!
We will term it as Hello World Project
Starting Xcode
1. Click on the search icon in the far right corner of your desktop to show the spotlight search field.
2.Type ‘Xcode’ and hit ‘Enter’.
3.The application menubar on the desktop will be replaced by Xcode menubar.
Creating a ‘Window-based Application’
1.In the xcode menu choose File > New Project
2.Here select ‘Window-based Application’ and click on the ‘Choose…’ button. On the next screen select the location for you project and specify the name of the project. In our case we will use ‘HelloWorld’ as the project name.
Note:Xcode will create a new directory at the specified location with the name of the project and it will automatically generate the basic source files for you
3.Here you will see the Xcode editor window. The files in the project are grouped together in the left sidebar under various ‘Groups’. Please note that these are logical groups presented as folder, they don’t reflect the exact folder structure under your main project directory.
- Classes
Here there are two files one ‘.h’ – header file and one ‘.m’ ‚Äì implementation file. In Objective-C the source files are denoted with ‘.m’ extension instead of regular ‘.c’ extension.
- Other Resources
Here there is ‘.pch’ ‚Äì Pre-compiled Header file and the ‘main.m’ file. This file contains the main() function of the program which is the default entry point for all C programs.
- Resources
The ‘.plist’ file is XML file which contains the settings for your iPhone application such as the name of the main icon file of the application, etc.
The ‘.xib’ is an interface builder file. This file is also called as ‘Nib’ file. This file contains the definitions of the various UI elements which you can create in Interface builder with VB style ‘Drag & Drop’ approach.
- Frameworks
This group contains the inbuilt frameworks referenced by your project.
- Products
This group contains a ‘.app’ file. It is the application bundle of your project which you will distribute.
Running the Application
At this point your application is ready to be built and run. Just hit the ‘Build & Go’ button on the Xcode toolbar to run your application. It will launch your application in the iPhone simulator.
As you can see iPhone Simulator launches your application and presents a blank window. You can terminate the application by clicking on the rounded square button near the bottom of the iPhone.
Adding a Label to the Main Window
1.Return to the Xcode editor by clicking on the Xcode icon in the ‘Launchpad
2.’Under ‘Resource’ group double click on the ‘MainWindow.xib’ file to open it in interface builder.
Here you will be presented 2-3 windows depending upon what was open in the previous run of the interface builder, but typically you should see at least one window as follows:
Here you can double click¬† on the fourth item ‘Window’ to bring the ‘canvas’ for you window, which look like as follows:
After this if the ‘Library’ window is not open you can open it by using Tools > Library menu option form ‘Interface Builder’ menu. This library window contains the ‘controls’ which you can put on your window.
3.Here scroll around the ‘Library’ window to find the library window. And drag and drop it on the window canvas.
4.Double click on the label and type ‘Hello World. Use ‘Command + S’ to save the file and hit ‘Command + R’ to run the project. You should see following result in the iPhone simulator.
So get Started!!