iOS--推送

推送介绍###

1.分类

  • 本地推送通知
  • 远程推送通知

2.推送呈现效果

  • 屏幕顶部出现一块横幅(显示推送内容)
  • 屏幕中部出现一块UIAlertView(显示推送内容)
  • 锁屏界面显示横幅(锁屏状态下,显示推送内容)
  • 播放音效(提醒用户)
  • 更新APP图标的数字(显示有几条推送内容)

3.使用注意

  • 应用程序正在前台运行时,发送的推送通知不会显示出来
  • 点击通知会打开对应的APP
  • 应用打开或者关闭,不影响推送的正常发出

本地推送通知###

步骤####

创建本地通知对象-->设置属性-->调度本地通知-->注册通知权限-->删除通知(如果设置了repeatInterval属性,需要删除通知)

代码####

//创建本地通知
UILocalNotification *localNotification = [[UILocalNotification alloc] init];

//设置通知发出的时间
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:4];
//设置通知的内容
localNotification.alertBody = @"你好,上课了";
//设置锁屏模式下滑块的文字
localNotification.alertAction = @"本地提醒";
//滑块上的文字显示是否生效
localNotification.hasAction = NO;
//点击通知后会触发加载图
localNotification.alertLaunchImage = @"加载图";
//设置alertTitle,在通知中心显示的标题
localNotification.alertTitle = @"didadida";
//设置通知发来的音效,用文件音效
localNotification.soundName = @"system.wav";
//设置应用程序icon右上角的数字
localNotification.applicationIconBadgeNumber = 10;
//设置重复提醒的间隔
//    localNotification.repeatInterval = NSCalendarUnitMinute;
//设置通知的其它信息,可以用来判断不同的通知,做不同的操作
localNotification.userInfo = @{@"type":@"name1"};

//调度本地通知
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

AppDelegate中代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

	//程序进来让提醒的数字消失
	application.applicationIconBadgeNumber = 0;

	//ios8.0后需要设置一下通知的类型
	if([[[UIDevice currentDevice] systemVersion] doubleValue] >= 8.0)
	{
    	UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
    	[application registerUserNotificationSettings:setting];
	}

	//界面的跳转(针对应用程序被杀死的状态下的跳转)
	if(launchOptions[UIApplicationLaunchOptionsLocalNotificationKey])
	{
    	//此处添加跳转代码
	}

	return YES;
}

//应用程序在进入前台,或者在前台的时候当收到通知时都会执行该方法
-(void)application:(UIApplication *)application didReceiveLocalNotification:(nonnull UILocalNotification *)notification
{
	if(application.applicationState == UIApplicationStateInactive)
	{
    	//程序进来让提醒的数字消失
    	application.applicationIconBadgeNumber = 0;
    
    	//可以在这里进行界面的跳转操作
	}
}

远程推送通知###

知识点了解####

  • APNS(Apple Push Notification Services)苹果推送服务器
  • 不管用户打开还是关闭APP,只要联网,都能接收到服务器推送的远程通知
  • 所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接(数据传输速度快,数据保持最新状态)

远程推送原理图####

开发到发布具有推送功能的APP的流程####

1.开发iOS程序的推送功能,iOS端需要做的事:

请求苹果获得deviceToken
得到苹果返回的deviceToken
发送deviceToken给公司的服务器
监听用户对通知的点击

2.调试iOS的远程服务功能,必备条件:

真机
调试推送需要的证书文件:
	1.aps_development.cer:某台电脑就能调试某个APP的推送服务
	2.iphone5_qq.mobileprovision:某台电脑就能利用某台设备调试某个程序

3.发布具有推送服务的APP

aps_production.cer:如果发布的程序中包含了推送服务,就必须安装这个证书
qq.mobileprovision:某台电脑就能发布某个程序
原文地址:https://www.cnblogs.com/s-y-j/p/5983368.html