现在的很多应用当中会有消息推送的功能,本地推送就不多说了,大部分的时候都是远程服务器推送,而苹果自身的一套推送机制自己写起来会比较繁琐,大部分的时候会用到一些第三方的,比如 极光推送,友盟推送,百度推送等等,其实都大同小异.在公司项目中我集成的是极光推,就说说极光推送的那些事儿.
1. 集成. 在项目中集成极光推送,相对来说不复杂,文档很详尽,就不赘述 .稍微繁琐的可能就是证书的配置,详见 http://docs.jiguang.cn/client/ios_tutorials/.
2. 实际运用.
(1) 文档集成完毕之后,可以用 极光的服务器 进行推送测试,测试时有全推和个推.全推就是针对服务器中所有用户(在我们公司服务器中已注册的用户).个推就是针对于某一个用户(可利用设置别名)来推送消息.一般是利用注册用户的 userID 来作为标识在登陆的时候设置别名,在退出的时候清空别名.比如:
/**alias 为 UserID */
[JPUSHService setTags:nil alias:alias callbackSelector:@selector(tagsAliasCallback:tags:alias:) target:self];
当我们接受到远程服务器的消息的时候回调用方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
if (application.applicationState == UIApplicationStateActive) { // 如果应用在前台的话
1. 提出自己想要的视图..(自定义省略)
2. 点击跳转指定控制器(界面)
[self pushNotificationPageWithActive];
}else{ // 应用在后台
[self pushNotificationPage:userInfo];
}
[JPUSHService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
/** 应用如果在前台运行的话推送的消息默认状态下是没有显示的,所以需要在接收到远程消息推送服务的时候做一个判断,如果应用在前台的话(项目变态需求需要有类似通知栏的展示)模拟了一个类似通知栏的效果,现在审核中,目前还不知道这个会不会被拒哈*/
-(void)pushNotificationPage:(NSDictionary*)userInfo
{
UITabBarController* tabBarVc=(UITabBarController*)[UIApplication sharedApplication