-->

iPod Touch 4G thinks it's an iPad

2019-02-18 03:52发布

问题:

I have a universal app built that runs and works perfectly on an iPad, iPhone 4G, 3GS & 3G, but when run on an iPod Touch 4G it won't run properly.

I don't have a iPod Touch to test, but I have been told by a beta tester that it installs on the device fine, but when run it shows the Default.png from the iPad version of the app squashed into the screen when launched, then just goes black from there. When the app is force quit (using the app switcher) and re-launched it does the same thing again.

I have double checked that the Targeted Device Family is iPhone/iPad and done a clean build etc. but still no dice.

回答1:

So after some trial and error I worked out what the problem was (actually two separate but related problems):

In my info.plist I was using two keys to assign the different MainWindow files:

Main nib file base name (iPad)

and

Main nib file base name (iPhone)

I mistakenly thought the second key would apply to the iPod Touch also as there is no Main nib file base name (iPodTouch) key. Turns out this is wrong and the iPod Touch actually looks for the Main nib file base name key. So now I have it setup like this:

..and it's working fine in 3.1.3 & 4.2. (Note that application:didFinishLaunchingWithOptions is not called if the device can't find a MainWindow to use, that's how I worked out the problem).

I suspect the same will apply to the Launch image (iPad), Launch image (iPhone) and Launch image keys, which would explain why the iPod Touch is using the iPad launch image but haven't been able to try it yet.



回答2:

Make sure the Default.pngs are correctly named:

  • Default.png (Default)
  • Default~iphone.png (iPhone or iPod touch)
  • Default~ipad.png (iPad)

For the iPad resources you can also specify certain default PNGs for each orientation.



回答3:

There's currently a jailbreak technique that uses some of the iPad firmware to install on an iPhone or iPod Touch. In theory it shouldn't affect anything, but I've never done it myself so I can't vouch for that. You might ask if this tester is on a jailbroken device, and if so try on a non-jailbroken device.



回答4:

I am not sure it will work, but it may help you.

Make sure that, in the InterfaceBuilder, the attribute(visibleAtLaunch) in main window is checked.

Some times if it doesn't checked then it will show black screen.