ios 消息推送简介

消息推送流程


手机系统会一直保持与苹果APNs一个通信


当打开App时候,会从苹果Apns得到一个toKen


发送toKen到后台服务器


服务器发送这个toKen 推送数据给苹果APNs (以为push通道是由苹果维护的一个唯一的通道)


苹果APNs得到后再根据这个toKen推送得到的消息给我们的ios设备


我们得到toKen后就知道是哪个APP的推送内容了



消息推送(以V8.0+为例子)(搭建push环境)

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

{ 


 //读取系统版本,判断是否大于8.0

 if([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0) {

//首先向用户询问push的权限,向用户申请权限

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

        [[UIApplication sharedApplication] registerUserNotificationSettings:setting];


 }else{

        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

}


}


//用户同意之后回调,去注册DeviceToken

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(nonnull UIUserNotificationSettings *)notificationSettings{

    [[UIApplication sharedApplication] registerForRemoteNotifications];

}


//注册成功回调,得到DeviceToken

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

    DLog(@succeed regist remote notification");

    NSString* tokenStr = [NSString stringWithFormat:@"%@", aDeviceToken];

    tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@" " withString:@""];

    tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@"<" withString:@""];

    tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@">" withString:@""];

    //向服务器发送

}


//注册失败回调

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

DLog(@"failed regist remote notification %@ ", error);

}



//当接收到远程通知回调

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

NSDictionary *apsDictionary = [userInfo objectForKey:@"aps"];

    //解析JSon

    /*

     具体处理。。。

     if...{

        跳转某个controller。。。

     }

     */

}


消息推送(本地推送)


@property (nonatomic, retain) UILocalNotification *localNotification;


- (void)backGround{

     _localNotification = [UILocalNotification new];

    //多久以后提示用户

    _localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

    _localNotification.alertBody = @"你都走了5秒钟了";

    _localNotification.alertTitle = @"你妹的!";

    _localNotification.userInfo = @{@"key":@"value"};

    [[UIApplication sharedApplication] scheduleLocalNotification:_localNotification];

}


- (void)foreGround{

    [[UIApplication sharedApplication] cancelLocalNotification:_localNotification];


}


- (void)viewDidLoad

{

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(backGround) name:UIApplicationDidEnterBackgroundNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(foreGround) name:UIApplicationWillEnterForegroundNotification object:nil];

}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值