apns的部署工作我就不在这儿做详细说明了,去google就可以了,不过推荐去看英文的。
设备处理push通知的情况有3种:
在通知中心点击通知开启app;app在后台,通知中心点击通知开启app;app在运行时;
第一种情况在application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中做处理,另外两个在application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
中处理。
在通知中心点击通知开启app
app没有被开启,通知在通知中心,点击通知打开app。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions != nil) {
NSDictionary *userInfo = [option objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo) {
//处理推送通知,我做了个延迟,方便app完成初始化。
[self performSelector:@selector(dosomeToHandleuserInfo:) withObject:userInfo afterDelay:3];
}
}
..........
}
app在后台,通知中心点击通知开启app & app在运行时
这两种情况需要区分的是app的状态
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if (application.applicationState == UIApplicationStateActive) {
//app运行时
}else if (application.applicationState == UIApplicationStateInactive){
//刚才app在后台
}
}
然后简单说下push通知的内容
{
aps = {
alert = {
action = "action";
body = "body";
title = title;
};
sound = default;
};
}
body
里放些要显示的内容,action
里放些需要处理不同事件的内容,title不知道干什么用了,也不显示。sound
可以去自定义提示音。