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

    

    if ([UIDevice currentDevice].systemVersion.floatValue>= 8.0) {//8.0前后写法不一样。做个判断

        UIUserNotificationSettings * settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert |UIUserNotificationTypeSound | UIUserNotificationTypeBadge categories:nil];

        [application registerUserNotificationSettings:settings];

        

    }else{

        //以下方法在8.0后被淘汰。但是如果用户没有升级系统,则还需要用该方法,我们尽量兼容一下。

        [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert |UIUserNotificationTypeBadge | UIUserNotificationTypeSound];

    

    }

    /*发送通知分两种形式

     形式一:本地摄像头,一般用于闹钟、行程安排、区域变化提醒

     形式二:远程推送,由服务器负责,跟我们没关系。这个需要证书支持。

    */

    UILocalNotification * localNoti = [UILocalNotification new];

    localNoti.alertTitle = @"title";

    localNoti.alertBody = @"alertBody";

    //弹出通知时的提示声音,可以填写bundle文件中的声音文件名,小于30

    localNoti.soundName = UILocalNotificationDefaultSoundName;//左边用系统默认的声音

    //触发通知的时间。

    NSDate * date = [NSDate dateWithTimeIntervalSinceNow:6];

    localNoti.fireDate =date;

    //推送消息的未读数--会在桌面图标上显示

    localNoti.applicationIconBadgeNumber =10;

    

    //去掉图标上的红色数字

    application.applicationIconBadgeNumber = 0;

    

    //启动本地通知服务

    [application scheduleLocalNotification:localNoti];

    //测试:如果用模拟器,按CMD+L对模拟器锁屏,然后等通知发送

    //真机测试,启动后, 锁屏等就行。

    

    //远程推送服务:APNs -> apple push notification service

    /*

     流程一:使用购买的开发者账号到developer.apple.com去申请一个应用的证书,只有有证书的应用才能够被苹果服务器承认。证书是和bundleId绑定的 ---com.xxx.projectname

     流程二:证书分两种,一个给你的app另一个给你的服务器。

     流程三:远程推送必须真机,模拟器无效。真机运行后,通过上方代码注册推送服务,苹果公司会根据你的bundleID和手机唯一硬件标识 给你手机推送一个在苹果服务器上的唯一标识--deviceToken

     流程四:我们需要把收到的deviceToken发送给我们的服务器,这个需要服务器提供一个接口

     流程五:服务器人员拿着唯一标识,通过证书向苹果服务器发送请求,让他向这个唯一标识所在的设备发送通知。

     流程六:通过代理收到推送消息,做相应处理。

     */

    

    return YES;

}

 

/** 回调方法,接收服务器回传的设备的唯一标识 */

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{

    

 

}

/** 收到苹果服务器推送的消息时触发*/

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{

 

}

 

/** 收到本地推送 */

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{

    

}

/**推送服务失败,一般是因为证书不对或者模拟器运行导致失败*/

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{

 

 

}