IOS开发入门之ios 消息推送详情
凌雪 2018-10-10 来源 :网络 阅读 910 评论 0

摘要:本文将带你了解IOS开发入门ios 消息推送详情,希望本文对大家学IOS有所帮助。

本文将带你了解IOS开发入门ios 消息推送详情,希望本文对大家学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];

}

    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!


本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程