Sometimes, you need to change APN for Officical unjailbreak iPhone 2.0 firmware, however, the carrier APN setting is hidden for your carrier (e.g. the official 3 HK network and some One2Free Sim Cards have this problem)
In fact, Apple has an iPhone Configuration Utility to change some network settings (such as VPN / password policy or credentials etc) and put in a profile for user self-installation in iPhone. This installation supports both website and email
http://www.apple.com/support/downloads/iphoneconfigurationutility10formacosx.html
There are already websites implementing it for the change of APN
And this utility included the ability to change APN setting only. So I have put it into a profile to name it as APNChanger, and you can email to change APN as when you need it, the content of this xml file is
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>DefaultsData</key>
<dict>
<key>apns</key>
<array>
<dict>
<key>apn</key>
<string>YourCarrierAPN</string>
<key>password</key>
<data></data>
<key>username</key>
<string></string>
</dict>
</array>
</dict>
<key>DefaultsDomainName</key>
<string>com.apple.managedCarrier</string>
</dict>
</array>
<key>PayloadDescription</key>
<string>Provides customization of carrier Access Point Name.</string>
<key>PayloadDisplayName</key>
<string>Advanced Settings</string>
<key>PayloadIdentifier</key>
<string>apnchanger.</string>
<key>PayloadOrganization</key>
<string></string>
<key>PayloadType</key>
<string>com.apple.apn.managed</string>
<key>PayloadUUID</key>
<string>49862D87-3E64-4904-BEC4-E34F7637D1D0</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string>APN Changer</string>
<key>PayloadDisplayName</key>
<string>APN Changer</string>
<key>PayloadIdentifier</key>
<string>apnchanger</string>
<key>PayloadOrganization</key>
<string></string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>31019873-11E9-4A51-9626-440E537D11F0</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
So this is the instruction on how to use it to change your APN if you have unjailbreak phone. This works for jailbreak iPhone but without the carrier bundle patch as well.
Instructions to install
(1) Download this xml sample file from here
http://cocoatouchdev.com/javacom/APNChanger.mobileconfig
and saved it as APNChanger.mobileconfig (please remove .txt in your filename)
(2) Edit the file and change YourCarrierAPN to something else that you need
<dict>
<key>apn</key>
<string>YourCarrierAPN</string>
<key>password</key>
<data></data>
<key>username</key>
<string></string>
</dict>
(3) Email this modified file (APNChanger.mobileconfig) to your email address in iPhone and click and install it when you open up that email as per screen dump (upper 2) of below
Instructions to remove
(1) Goto Settings -> General -> Profiles
(2) Remove the profile as per screen dump (bottom 2) below
Instructions to reinstall
(1) Keep that email in your iPhone
(2) Do installation of profile again when you need it.
Instructions to disable 3G data
(1) email that "APNChanger.mobileconfig" file without any modification directly to your emial in iPhone
(2) Install the profile when you need to disable 3G data
(3) Keep that email in your iPhone
Because that APN is meaningless to your carrier.
