首页 » IOS » ios 消息推送简介

ios 消息推送简介

原文 http://blog.csdn.net/usernameysz/article/details/79164909

2018-01-26 02:00:43阅读(506)

消息推送流程


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


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


发送toKen到后台服务器


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


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


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

ios 消息推送<a href=简介" src="http://img.blog.csdn.net/20180125175151504?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXNlcm5hbWV5c3o=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="300" alt="">

ios 消息推送简介

消息推送(以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);

}


消息推送(本地推送)


@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];

}



最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹