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"];
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。