您的位置:首页 > 移动开发 > IOS开发

ios中的推送通知

2015-11-10 23:07 447 查看
注意:

这里的推送通知和NSNotificaton有所区别。[b]NSNotification是抽象的不可见的。推送通知是可见的(能用肉眼看见的)[/b]

[b]推送通知分两种:本地推送通知(local notification)和远程推送通知(remote notification)[/b]

推送通知:可以让不在前台运行的app(在后台,或者是关闭),告知用户app内部发生了什么事情。

本地推送通知:不需要联网就能发出的推送通知(不需要服务器的支持)。常用于定时提醒用户一些事情。

远程推送通知:不管打开还是关闭app,只要联网都能接收到服务器的远程消息。手机把设备的udid和app的bundle id发送给苹果服务器,苹果服务器通过加密生成devicetoken。手机通过app给服务器发送消息时候把devicetoken顺便发送过去,服务器保存此devicetoken。当app关闭时候,服务器把消息和devicetoken发送给苹果服务器,苹果服务器通过此devicetoken推送给手机。
****不管是调试还是发布带有推送功能的app,都要配置推送证书和描述文件。
先获取一个许可,然后注册一个远程通知,然后在代理方法中接收devicetoken

注意事项:ios8以上必须注册一个用户许可才可发送通知。(下面截图代码,不管是本地或者远程ios8以上都必须加)



1.本地通知具体代码:

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
//把app右上角的显示的通知数字删除
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}

- (IBAction)addLocalNote {
<span style="white-space:pre">	</span>//本地通知对象的属性如下:
/*
@property(nonatomic,copy) NSDate *fireDate; // 设置本地推送的时间
@property(nonatomic,copy) NSTimeZone *timeZone; // 时区

@property(nonatomic) NSCalendarUnit repeatInterval;     // 重复多少个单元发出一次
@property(nonatomic,copy) NSCalendar *repeatCalendar;   // 设置日期

@property(nonatomic,copy) CLRegion *region NS_AVAILABLE_IOS(8_0);  // 比如某一个区域的时候发出通知
@property(nonatomic,assign) BOOL regionTriggersOnce NS_AVAILABLE_IOS(8_0); // 进入区域是否重复

@property(nonatomic,copy) NSString *alertBody;      消息的内容
@property(nonatomic) BOOL hasAction;                是否显示alertAction的文字(默认是YES)
@property(nonatomic,copy) NSString *alertAction;    设置锁屏状态下,显示的一个文字
@property(nonatomic,copy) NSString *alertLaunchImage;   启动图片

@property(nonatomic,copy) NSString *soundName;      UILocalNotificationDefaultSoundName

@property(nonatomic) NSInteger applicationIconBadgeNumber;  应用图标右上角的提醒数字

// user info
@property(nonatomic,copy) NSDictionary *userInfo;
*/
// 1.创建本地通知
UILocalNotification *localNote = [[UILocalNotification alloc] init];

// 1.1.设置什么时间弹出
localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

// 1.2.设置弹出的内容
localNote.alertBody = @"吃饭了吗?";

// 1.3.设置锁屏状态下,显示的一个文字
localNote.alertAction = @"快点打开";

// 1.4.显示启动图片
localNote.alertLaunchImage = @"123";

// 1.5.是否显示alertAction的文字(默认是YES)
localNote.hasAction = YES;

// 1.6.设置音效
localNote.soundName = UILocalNotificationDefaultSoundName;

// 1.7.应用图标右上角的提醒数字
localNote.applicationIconBadgeNumber = 999;

// 1.8.设置UserInfo来传递信息
localNote.userInfo = @{@"alertBody" : localNote.alertBody, @"applicationIconBadgeNumber" : @(localNote.applicationIconBadgeNumber)};

// 2.调度通知
[[UIApplication sharedApplication] scheduleLocalNotification:localNote];
}

添加需求:当用户通过点击通知打开app时候跳到指定页面(点击应用图标打开app还正常跳到主页面)(下面两幅图结合)。



注意点:不管用过通过何种方式打开app都会进入如下方法。但是当通过点击app图标打开时候,方法的参数launchOptions为nil。除此之外的其他方法(本地通知,远程通知,应用间跳转等等)打开app的时候参数launchOptions里面对应的键有值。



2.远程通知



具体代码:





远程推送不需要专门的后端用第三方库即可:用极光推送。进入极光推送官网,下载iosSDK。在根据网站上的指南创建一个自己的应用得到app key,根据步骤操作就可以了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: