iphone Development - iphone

How will you test an iPhone application without the iPhone being available?

The SDK comes with a simulator.

Of course the simulator doesn't really provide true feedback and it is most advised to do most of the testing on a real iPhone or an iPod if you don't own one, you could possibly use some beta testing program and publish your app there, using ad-hoc provisioning and adding UDID's according to requests. You could try "Mechanical Turk".

An iPhone application can be tested (to an extent) using simulators, it is included within iOS SDK. An iPhone application can run on simulators only if you have source code available with you, but cannot run iPhone builds (IPAfiles) directly on simulators.
The simulators have following limitations with reference to testing purposes
1. Accelerometer,
2. Telephony,
3. GPS,
4. Only up to two figure gestures can be simulated,
5. Hardware and memory, as simulators use the MAC hardware and memory etc.
So ideally testing on real device is more reliable rather than using simulators.

Related

IPhone app build and deliver to store without device

I have a simple question.
I use an old IPhone with ios version 3.1.3 and I have to deliver an app for the ios version 5.0.
Is it possible to build and deliver an 5.0 app to the store without the correct 5.0 device?
Problem is, it isn't really cheap to buy every single ios version device.
I know it is probably necessary to test on a real device, but I only want to know is it theoretically possible do develop and deliver without the device.
thanks for your help
Matthias
Yes, it's possible. Xcode comes with an iOS simulator that simulates iPhones and iPads running iOS 4.3 and 5.0. However these don't fully match real devices, so you really should be testing on real devices. There's an additional problem that a lot of functionality won't work on the simulator, such as in-app purchases and Game Center. But for basic applications, you can scrape by.
If you're looking to reduce costs, iPod touches are almost identical to iPhones and a lot cheaper, so that's the low cost way of testing on a real device. I would also upgrade your current device to iOS 4 if possible - iOS 3 is practically dead now, so it's better to test on a real device with iOS 4 than it is to try to support iOS 3.
Yes it is possible to deliver an app without the correct version.
I found out, that it is even possible to deliver apps without an iPhone.
even though you can deploy apps without having an iOS device ..or having a device with lower iOS version..
but in future and generally a good advice i will give is to find someone with correct iOS device version(any other version will work too) and get him to try your app using ad-hoc distribution..that way you can get feedback of how your app will perform..
Yes it's possible. You can anyway test most functionality by using the simulator.
With the new Xcode, you don't need the device when you are building for release.
What you need to do is select iOS Device in the menu, then Product -> Archive.
Then you will see the "Validate" and "Submit" options in your organizer.

Possible to test iPhone app without a real device?

I have to convert an iPhone app which is published at the AppStore. However, I do not have iPhone.
Is there any way to test the functionality of this app without a real phone? Would the emulator be of any help? Or maybe some web application?
If you don't have the source code for the app, you can't run it without an iPhone or iPod touch.
The iPhone Simulator (included with the SDK) won't be of any help, because it only runs apps that are compiled for Intel (your Mac). It's not an emulator and cannot run apps that are compiled for actual devices (ARM processors). Without the source code, you can't recompile the app.
iOS Simulator is NOT an emulator. It's a simulator. It doesn't emulate iOS hardware, it is running your app compiled as 64bit Intel app for Mac and displays it inside the iPhone-like window that looks and feels like iPhone, but doesn't have all features and some things don't work the same way.
For example, iOS has a case-sensitive file system, Mac doesn't, so iOS Simulator doesn't either. Also, there's no camera, sms, compass, accelerometer, magnetometer, or any other iPhone-specific feature.
So, yes, you can test some apps using iOS Simulator, but no, you shouldn't test them only using iOS Simulator.
You can of course test the app just with the simulator. However, the simulator lacks some capabilities like accelerometer data, so if you plan on using anything like this, you should consider getting at least the cheapest iPod Touch for testing.
If you do any operations that use lots of rescources (memory, processing power) you need to consider that the iPhone is not as fast as your Mac either.

Testing for bugs on Apple devices that you do not own

I'm starting to send out a beta version of my app for users to test. One came back and told me that the app crashes on her iPod Touch (2nd Gen). How do I debug for this considering I don't own one. All I have is the iPhone 4, yet there 9 other devices (each generation of iPhone, iPod Touch and iPad) that I would like my app to run on. Any advice?
EDIT 1
There is no iPod Touch hardware option in the simulator. Should I just assume that it is treated as an iPhone?
Hoptoad App is great for this. You can sign up for free for up to 1 project, and the implementation is very easy.
http://hoptoadapp.com/pages/home
For starters get the crash logs from your users' devices and try to debug based on those. Not a big help in testing on devices you don't have, I know, but at least you'll be able to figure out what crashed on each device your beta testers have...
You could try Apple's IOS simulator.
http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iphone_development/125-Using_iOS_Simulator/ios_simulator_application.html
To set the iOS release used in the
simulation environment, choose
Hardware > Version, and choose the
version you want to test on.

iPhone application compatibility

Please how can I make sure before developing my iPhone app that it will be compatible with iPhone4, 3GS, iPod touch and 3G?
You need to create the app keeping in mind all the features available in lowest version of iPhone you need it to be compatible to.
For Example:
Suppose you want it to be compatible to iPhone 2G then you cannot use in-app SMS feature as iPhone 2G cannot be upgraded to iOS 4.0 or higher.
In-app SMS feature is only available in iOS 4.0 and higher versions.
Hope this example gave you a proper idea.
Once the app is made, you should test your app throughly on different devices i.e. iPhone 3G, iPhone 3GS and iPhone 4 and iPod Touch.
Unless you test it on device, you cannot be sure because sometimes some of the things work in simulator but crashes on device.
So better to test on device.
Hope this helps you.
If it's the SDK you are talking about, you might want to make sure it runs on iOS 3.X versions. See here for more details.
If it's the hardware you are talking about, you will need to test your app on separate pieces of hardware to make sure that they all run.
The settings in XCode that you make regarding which version of iOS your app will be compatible with is the iOS deployment target and the Base SDK. The Base SDK is the default version you are building against (this should be set to the most recent SDK which is currently 4.3). The iOS deployment target is the earliest version you would like your app to be available for (currently goes back to 3.0 on XCode 4).
These settings are in the settings for your target.
As for if your app will actually work on all of these devices depends on how you program for them. In other words, if you are using new APIs, they obviously will not work on versions that did not implement them.
Hope this helps.
Jamie
You can't be sure without testing. (and even with testing, some say...)
There are potential "gothcha's" in the iOS API documentation, in the Simulator handling of those APIs, and particularly in device performance, which you may not realize or be able to guess until you actually try an app out on all the device models and iOS versions which you plan to support.
Even some simple apps with no undocumented API use and no compiler or analyzer warnings, et.al., have been know to "break" after a new OS version is released.
You can "claim" an app is compatible by appropriate setting of the Deployment Target in the Build settings, lack of plist hardware restrictions, and in the app store submission data. But that's only a claim, not compatibility.

When developing for iOS, which devices do you typically test on?

I'm needing to purchase whatever devices are needed to do testing for iOS applications. My initial thoughts are to test on a first-generation iPod Touch and an iPhone 4. Testing on the old iPod Touch with 3.1 software will give a good indication on how the app will work with little memory, and the iPhone 4 will obviously be a test for the faster system.
What do you all typically test on before submitting an application?
At minimum, a device running the oldest OS that I list as my Deployment Target, the slowest device/OS combo that I have (e.g. a 3G running 4.0.x is likely slower than anything running a 3.x OS) and which the app supports, and the current/latest released OS.
A device which includes all the features that my app will support (e.g. mic, camera, gyro, GPS, etc., if needed.)
Optionally, an iPad if the app is Universal, or if not to see how bad 2X zoom looks.
Optionally, a device with a beta OS installed if it appears Apple is going to release it well before I plan on revising the app.
So far all the apps I've submitted have been compatible with iOS 3.1.x, and I test them on my old 1st gen iPod Touch. I also test on my 3.2.2 iPad and my 4.0.2 iPhone 3GS.
My guess is all of these answers are going to be along the same lines -- test with as wide of a variety of devices as you can that are compatible with your app (i.e. meet the Minimum Deployment Version).
This is especially important if you develop Universal Apps that support 3.1.x. You'll find a ton of bugs with the hardware that you will never get with the simulator.
right now, I test using a 3g running 3.1 (a popular build), a 3gs running 4.0.2 (latest), a touch running 3.1.3(basically 3.1), and an iPhone 4 with 4.0.2.
Mainly try to keep a 3.x device around for sure, and then obviously a device with the most up to date OS.
Based on AdMob reports...around 98% of users are upgraded to atleast 3.0 and those that aren't shouldn't be your client base anyway (unlikely to use new apps).