Al03's blog

APNS app的处理

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可以去自定义提示音。