- (BOOL)application:(UIApplicationNSDictionary *)launchOptions {
    
ifUIDevicecurrentDevice].systemVersion.floatValue>= 8.0) {//8.0前后写法不一样。做个判断
UIUserNotificationSettingsUIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeAlertUIUserNotificationTypeSoundUIUserNotificationTypeBadgecategories:nil];
registerUserNotificationSettings:settings];
        
else{
//以下方法在8.0后被淘汰。但是如果用户没有升级系统,则还需要用该方法,我们尽量兼容一下。
registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlertUIUserNotificationTypeBadgeUIUserNotificationTypeSound];
    
    }
/*发送通知分两种形式
形式一:本地摄像头,一般用于闹钟、行程安排、区域变化提醒等
形式二:远程推送,由服务器负责,跟我们没关系。这个需要证书支持。
    */
UILocalNotificationUILocalNotificationnew];
alertTitle@"title";
alertBody@"alertBody";
//弹出通知时的提示声音,可以填写bundle文件中的声音文件名,小于30秒
soundNameUILocalNotificationDefaultSoundName;//左边用系统默认的声音
//触发通知的时间。
NSDateNSDatedateWithTimeIntervalSinceNow:6];
fireDate =date;
//推送消息的未读数--会在桌面图标上显示
applicationIconBadgeNumber10;
    
//去掉图标上的红色数字
applicationIconBadgeNumber0;
    
//启动本地通知服务
scheduleLocalNotification:localNoti];
//测试:如果用模拟器,按CMD+L对模拟器锁屏,然后等通知发送
//真机测试,启动后,锁屏等就行。
    
//远程推送服务:APNs -> apple push notification service
/*
流程一:使用购买的开发者账号到developer.apple.com去申请一个应用的证书,只有有证书的应用才能够被苹果服务器承认。证书是和bundleId绑定的 ---com.xxx.projectname
流程二:证书分两种,一个给你的app另一个给你的服务器。
流程三:远程推送必须真机,模拟器无效。真机运行后,通过上方代码注册推送服务,苹果公司会根据你的bundleID和手机唯一硬件标识给你手机推送一个在苹果服务器上的唯一标识--deviceToken
流程四:我们需要把收到的deviceToken发送给我们的服务器,这个需要服务器提供一个接口
流程五:服务器人员拿着唯一标识,通过证书向苹果服务器发送请求,让他向这个唯一标识所在的设备发送通知。
流程六:通过代理收到推送消息,做相应处理。
     */
    
returnYES;
}
 
/** 回调方法,接收服务器回传的设备的唯一标识 */
- (void)application:(UIApplicationNSData *)deviceToken{
    
 
}
/** 收到苹果服务器推送的消息时触发*/
- (void)application:(UIApplicationNSDictionary *)userInfo{
 
}
 
/** 收到本地推送 */
- (void)application:(UIApplicationUILocalNotification *)notification{
    
}
/**推送服务失败,一般是因为证书不对或者模拟器运行导致失败*/
-(void)application:(UIApplicationNSError *)error{
 
 
}