Multitasking on iOS4: Does it work only on iPhones? - iphone

I have iOS 4.0 on an iPod Touch 2nd Gen.
There's absolutely no multitasking working. Nothing goes to the background, and double-tapping the Home Button results in just nothing. I wanted to test my app against this new feature, but it appears that it doesn't work for iPod Touch devices?
Does that only work on the iPhone? Or is there some minor upgrade like 4.0.0.1 that enabled multitasking? Or must I enable that somewhere, manually?
Really strange. I do the exact same thing like the Apple guys do in the demo videos.

The documentation says:
The ability to run background tasks is not supported on all iPhone OS–based devices. If a device is not running iPhone OS 4 and later, or if the hardware is not capable of running applications in the background, the system reverts to the previously defined behavior for handling applications.
You can test if it's supported with the following code:
UIDevice * device = [ UIDevice currentDevice ];
BOOL backgroundSupported = NO;
if( [ device respondsToSelector: #selector( isMultitaskingSupported ) ] )
{
backgroundSupported = device.multitaskingSupported;
}

Multitasking only works on the 3GS iPhones and up. You are out of luck with your 2nd Gen iPod Touch (its like the iPhone 3G, sort of). Sorry.
EDIT: You would need a 3rd Gen iPod Touch, just to be clear.

You need a 3rd gen iPod Touch for that to work. I've run into the same issue.

According to this wikipedia article (see features section) multitasking is supported on 3rd gen iPods only

Apple's official ipsw's (iphone software) have disabled multitasking for ipt2g. If you jailbreak you can enable multitasking for your device but the performance will be poor.

Mutitasking is supported by 3 generation n 4g ... Iphones

I believe UILocalNotifications, part of the multitasking package, are supported on the 2G iPod Touch and the iPhone 3G.

Related

Is it possible to simulate Iphone 3g?

my question is: with the simulator, is possible to simulate the other type of iphone?(3g, 3gs) or only iphone 4?
Thanks
iPhone Simulator only simulates a small portion of the software. It does not emulate hardware at all (otherwise it would have been called iPhone Emulator).
The only way to test your apps on real-world hardware constraints is to get a paid program account and install your apps on real devices.
Because the hardware differences between the iPhone 3G and the 3GS doesn't affect in the test of applications. The simulator doesn't limit memory usage or CPU speed based on what hardware you've selected, the accelerometer cannot be simulated, so the only difference of consideration is the screen size, that changes between iPhone 4 and 3G/3GS, but not between 3GS and 3G.
Good luck!
No, it's not possible. If you try to detect device type on simulator with the following code it'll never return you any version except 'iPhone Simulator'.
#import <sys/utsname.h>
+ (NSString *)getDeviceType {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}

Compatible with iPhone, iPod touch and

I uploaded an app on app store just for iphone and ipod touch but on app store write
Compatible with iPhone, iPod touch and
iPad
why? is it necessary that i do something in iphone sdk ?
Don't worry. iPhone (and iPod touch) applications are "automagically" compatible with the iPad. In other words, they can be run unmodified. When executed in an iPad, they are zoomed in order to fill the whole screen.
just leave it as it is. that doesn't mean that your app is universal.
the ipad can run iphone apps.

List of iOS devices that support compass/geomagnetic field

I am developing an augmented reality iOS app (iPhone/iPad/iPod) and I would like to have a list of devices where this feature is supported.
I mean the compass and the geomagnetic field so that I can get the orientation of the device in all degrees of freedom.
Thanks!
The compass is available on all iPads and on the iPhone 3GS and 4.
I was also wondering if there are any devices left capable of running iOS7 or iOS8 without compass feature and a quick research pointed out the following:
Compass available:
on any iPhone 3GS or later. iOS7 support from iPhone 4 or later, iOS8 support from 4S or later.
on any iPad. iOS7 and iOS8 support starts with iPad 2 or later.
Compass not available:
on any iPod touch. 5th generation (current model as of 2015) does support iOS7 and iOS8
So if you design an application for iOS7 or iOS8 and only for the iPhone/iPad there will be heading available. For the iPod touch not.
Compass does not provide orientation in all degrees of freedom, although you can get that data from the orientation sensors.
You should also look at the gyroscope (iPhone4 and iPod touch 4 only so far), which provides much more accurate and faster orientation sensing in all degrees of freedom, see UFO on Tape for an excellent example.

Does a third-generation iPod Touch support video compositions?

In my project I use AVVideoComposition, it only works on iPhone 3GS and iPhone 4. On iPods and iPhone 3 it returns exception that this library is not supporting by that device, so is anybody know did the new iPod touch supports that or not?
The third-generation iPod Touch should be supported, see the slides from WWDC session 407:

Does UI_USER_INTERFACE_IDIOM work with Targeted Device Family

So I'm currently using UI_USER_INTERFACE_IDIOM in conjunction with [[UIDevice currentDevice] model] to check if I'm on an iPhone, iPod or iPad. What I've found is that in the iPad simulator 3.2, UI_USER_INTERFACE_IDIOM still evaluates to UIUserInterfaceIdiomPhone (iPhone).
I'm wondering if this has something to do with my Targeted Device Family setting. I'm only targeting iPhone for my App (I don't want to make a universal app with scaling views). However, I support the 3.2 SDK so I still want users that have an iPad to be able to run my iPhone app.
Will UI_USER_INTERFACE_IDIOM evaluate correctly on the iPad even when I'm targeting iPhone?
UI_USER_INTERFACE_IDIOM does not check if the device is an iPhone or iPad. What it checks is whether the user interface is in iPhone mode (the 1x/2x thing) or iPad mode.
If an app isn't configured to target iPad, it will always return UIUserInterfaceIdiomPhone because the UI is an iPhone app. It is a feature by design.
And even if the app is configured to target iPhone only, the iPad should be able to run it without any problems as long as you use the methods as documented.
(If you need iPad-specific capabilities, do not check whether the device really is an iPad. Instead, check for individual capability.)
Best I can offer is that on the iPad simulator (3.2) while running in "iPhone" mode the
NSLog(#"model : %#", [UIDevice currentDevice].model);
returns
model : iPhone Simulator
(as a note: I am building for "iPhone" only and thus running in the iPhone experience on iPad. I have to assume the "model" name returned is affected by that)
As people have said, check the individual capability.
For making a call, do this
// Only show the button if its is a device capable of making calls
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:#"tel:"]]) {
self.Button.hidden = NO;
} else {
self.Button.hidden = YES;
}