I will not talk about the push mechanism and the certificate used for pushing here. About the push code: Client: 1. Tell the application to receive push messages (of course, in the didfinishlaunchingwitexceptions method) [cpp] [application registerForRemoteNotificationTypes: platform | platform | UIRemoteNotificationTypeSound]; [application platform: uiremotenotiftypetypealert | uiremotenotiftypetypebadge | uiremotenotiftypetypesound]; 2. What is indispensable for pushing: deviceToken. EviceToken. DeviceToken corresponds to Apple devices around the world, that is, it is unique. [Cpp]-(void) application :( UIApplication *) application didRegisterForRemoteNotificationsWithDeviceToken :( NSData *) deviceToken {NSLog (@ "Get deviceToken of the device: % @", deviceToken );} -(void) application :( UIApplication *) application didFailToRegisterForRemoteNotificationsWithError :( NSError *) error {NSLog (@ "Failed to get token, error: % @", error);-(void) application :( UIApplication *) application didRegisterFor RemoteNotificationsWithDeviceToken :( NSData *) deviceToken {NSLog (@ "Get deviceToken: % @", deviceToken);}-(void) application :( UIApplication *) application Identifier :( NSError *) error {NSLog (@ "Failed to get token, error: % @", error); 3. method for processing the pushed message: [cpp]-(void) application :( UIApplication *) application didReceiveRemoteNotification :( NSDictionary *) userInfo {// If ([[userInfo objectForKey: @ "aps"] objectForKey: @ "alert"]! = NULL) {UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Pushed message" message: [[userInfo objectForKey: @ "aps"] objectForKey: @ "alert"] delegate: self cancelButtonTitle: @ "close" otherButtonTitles: @ "processing", nil]; [alert show]; [alert release] ;}}