iOS Push相关的资料

2016/6/18 posted in  iOS
  • 苹果官方的APNS,支持App不同状态下(前台、后台、未启动等)的消息推送。

  • 另外个方案是,App和应用服务间维护一个长链接,应用服务通过心跳感知App状态。当App为在线状态时,应用服务可以通过该长链接推送消息。一般跟APNS配合使用。

  • 自己的项目中使用的是友盟推送。

  • 在Push消息中设置自定义参数,App在- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo收到消息后解析参数并做相应逻辑(如跳转到相应页面等)

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken");
    
    // 注册用户登录登出监听
    [self handleRemoteNotificationDidRegistered];
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"didFailToRegisterForRemoteNotificationsWithError");
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    NSLog(@"didReceiveRemoteNotification");
    
    [UMessage didReceiveRemoteNotification:userInfo];
    
    NSString *jsonString = [userInfo objectForKey:@"custom"];
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
                                                        options:NSJSONReadingMutableContainers
                                                          error:nil];
    if (dic==nil || [dic isEqual:[NSNull null]]) {
        return;
    }

    [self handleRemoteNotification:dic];
}

其他一些资料