极光推送点击消息栏跳转到指定页面、设置标签或别名

上周,完成app新版本的开发。自从进入这版app的开发就没来更新过文章了,接下来会陆陆续续写一下在这过程中遇到的问题及一些总结。今天,就先说说消息推送吧。

推送,大家都不陌生,没有推送功能的app估计是少数。当然,对于推送介绍的文章也非常多也很仔细,但是真正开发过程中,还是会遇到各种问题,接下来会和大家谈谈集成推送的方法及我在开发中遇到的问题,但愿能给你们开发中遇到类似的问题时提供一种思路。

在推送过程我遇到的问题主要有:
1.在点击消息栏进入指定页面后,页面的点击事件不响应
2.点击消息栏进入指定页面后,页面的导航栏问题

其实这两个问题,归根结底是因为跳转时选择的控制器不对。比如当我点击消息栏时,希望跳转到A页面,A中没有导航栏。我开始用的是[self.window.rootViewController presentViewController:A animated:YES completion:nil],这时候跳转到A页面后,A页面中控件的点击事件不起作用了,后面发现,是因为层级图不对。而且用present的话,没有导航栏,所以当你跳转到指定页面A时,如果A页面的点击事件还有跳转到新页面B的功能,那么这个当你通过A push出来的B页面是没有导航栏的,而实际上我们希望的B是有导航栏的。

最后换成了pushViewController的方法。这个方法的关键是,你得找到当前的的VC,比如A页面是通过tabbar的第一个item中的VC的navpush出来的,那么这时候,只要找到tabbar第一个Item对应的nav中VC,然后用这个VC的 nav
push出A页面,问题就可以解决了。

接下来,说说该如何集成极光推送、如何处理收到通知时的页面跳转问题,以及如何设置标签和别名。

一、处理收到通知时页面跳转问题。
1.你需要到极光推送的平台上申请appkey,申请的过程中需要上传开发环境和正式环境的消息推送证书,所以如果你的app还没有消息推送证书,那么你需要到苹果的开发者账号中申请消息推送证书。如果对这个步骤不是很了解的话,可以参照iOS 证书 设置指南

2.申请好极光推送的appkey后,将下载的SDK拖到自己的工程中,添加相应的framework,配置好相关信息。也可参照官方文档
iOS SDK 集成指南

3.在 AppDelegate.m引入

#import "JPUSHService.h"
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
#endif 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中注册极光推送

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self initRootViewController];


    if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
        //iOS10以上
        JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
        entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound;
        [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
    }else if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
        //iOS8以上可以添加自定义categories
        [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                          UIUserNotificationTypeSound |
                                                          UIUserNotificationTypeAlert)
                                              categories:nil];
    }
    else {
        //iOS8以下categories 必须为nil
        [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                          UIRemoteNotificationTypeSound |
                                                          UIRemoteNotificationTypeAlert)
                                              categories:nil];
    }
    BOOL isProduction = NO;// NO为开发环境,YES为生产环境

    //Required(2.1.5版本的SDK新增的注册方法,改成可上报IDFA,如果没有使用IDFA直接传nil
    [JPUSHService setupWithOption:launchOptions appKey:&
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值