iOS消息远程推送通知
本文实例为大家分享了iOS消息推送、iOS远程通知代码,供大家参考,具体内容如下
消息推送
/* 要开发测试消息机制的程序,必须用真机测试 推送消息的类型 UIRemoteNotificationTypeNone不接收推送消息 UIRemoteNotificationTypeBadge接收图标数字 UIRemoteNotificationTypeSound接收音频 UIRemoteNotificationTypeAlert接收消息文字 UIRemoteNotificationTypeNewsstandContentAvailability接收订阅消息 要想监听到注册的deviceToken需要在苹果的开发者中心,进行一些设置工作才可以。 */ -(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions { //设置应用程序能够接收APNS推送的消息 [applicationregisterForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound]; self.window=[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]]; self.window.backgroundColor=[UIColorwhiteColor]; [self.windowmakeKeyAndVisible]; returnYES; } #pragmamark-获取DeviceToken -(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { NSLog(@"%@",deviceToken); //1.从系统偏好取之前的token NSData*oldToken=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"deviceToken"]; //2.新旧token进行比较 if(![oldTokenisEqualToData:deviceToken]){ //3.如果不一致,保存token到系统偏好 [[NSUserDefaultsstandardUserDefaults]setObject:deviceTokenforKey:@"deviceToken"]; //4.使用post请求传输新旧token至服务器 //1)url //具体的URL地址以及POST请求中的参数和格式,是由公司的后端程序员提供的 //2)requestPOSTbody(包含新旧token的数据) //3)connection的异步 } }
远程通知
/** 远程消息推送必须在真机上运行! */ -(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions { //需要告诉苹果的服务器,当前应用程序需要接收远程通知 [applicationregisterForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound]; returnYES; } #pragmamark-获取到设备的代号(令牌) //接收到苹果返回的设备代号 -(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { //第一次运行获取到DeviceToken时间会比较长! NSLog(@"%@",deviceToken); //将deviceToken转换成字符串,以便后续使用 NSString*token=[deviceTokendescription]; NSLog(@"description%@",token); //======================================================= //如果DeviceToken发生变化,需要通知服务器 //每次都记录住从服务器获取到得DeviceToken //再次获取时进行比对 //从偏好设置取出当前保存的Token NSString*oldToken=[[NSUserDefaultsstandardUserDefaults]objectForKey:@"DeviceToken"]; //当Token发生变化时,提交给服务器保存新的Token //if(![oldTokenisEqualToString:token]){ // ////将deviceToken通过Post请求,提交给自己的服务器即可! ////发送Post请求 //NSURL*url=[NSURLURLWithString:@"公司后台服务器的网址"]; //NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10.f]; // //request.HTTPMethod=@"POST"; //request.HTTPBody=@"转换后的设备ID以及其他信息[之前的Token]"; // ////SQL:updatet_deviceTablesettoken=newTokenwheretoken=oldToken; // ////同步:必须执行完才能继续 ////异步:直接交给其他线程工作,不干扰主线程工作,用户也感觉不到延迟 //[NSURLConnectionsendAsynchronousRequest:requestqueue:[NSOperationQueuemainQueue]completionHandler:^(NSURLResponse*response,NSData*data,NSError*connectionError){ ////偷偷的将用户信息传送到公司的服务器 //}]; //} //将Token保存至系统偏好 [[NSUserDefaultsstandardUserDefaults]setObject:tokenforKey:@"DeviceToken"]; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。