极光推送的坑

极光推送开发环境可以收到,生产环境收不到推送

初次发现这个问题的时候 首先排查的就是证书配置。

绿色的表示没什么问题。

开发环境的证书跟生产环境的证书 都已经配置完成,

下面我们看看极光官网的配置

这个也没有问题。 然后看代码

//极光植入

    [JPUSHService setBadge:0]; //JPush服务器角标置为0

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];//app角标置为0

    //极光推送

    //notice: 3.0.0及以后版本注册可以这样写,也可以继续用之前的注册方式

    JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];

    entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;

    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

        // 可以添加自定义categories

        // NSSet<UNNotificationCategory *> *categories for iOS10 or later

        // NSSet<UIUserNotificationCategory *> *categories for iOS8 and iOS9

    }

    [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];

    

    //JAppKey : 极光推送申请下来的appKey Jchannel : 可以直接设置默认值即可 Publish channel

    //是否是开启的

    BOOL JPush = NO;

    if ([kMemberLoginProductFlag isEqualToString:@"YES"])

    {

        JPush = YES;

    }

    else{

        JPush = NO;

    }

    

    [JPUSHService setupWithOption:launchOptions appKey:JiGuangAppKey

                          channel:nil apsForProduction:JPush]; //如果是生产环境应该设置为YES

 

#pragma mark - 向服务器上报Device Token    极光代理

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    

    // Required - 注册 DeviceToken

    

    [JPUSHService registerDeviceToken:deviceToken];

    

}

#pragma mark - 极光推送代理

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {

    

    NSDictionary * userInfo = notification.request.content.userInfo;

    DLog(@"@@@@@@@进来了进来了  %@",userInfo);

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]])  {

        [JPUSHService handleRemoteNotification:userInfo];

    }

    completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);  // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置

}

 

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

    

    NSDictionary * userInfo = response.notification.request.content.userInfo;

    DLog(@"@@@@@@@进来了进来了  %@",userInfo);

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

        [JPUSHService handleRemoteNotification:userInfo];

        

    }

    completionHandler(); // 系统要求执行这个方法

    [JPUSHService setBadge:0]; //JPush服务器角标置为0

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];//app角标置为0

    

    //这里是自定义了 。。。。。。

    if([UIApplication sharedApplication].applicationState == UIApplicationStateActive || [UIApplication sharedApplication].applicationState == UIApplicationStateBackground)

    {

        DLog(@"@@@@@@@进来了");

        

        [self pushViewControllerWith:userInfo];

    }else

    {

        

//        if (![USER_DEFAULT valueForKey:kNotificationPushDictionary])

//        {

//            [self pushViewControllerWith:userInfo];

//        }

        DLog(@"@@@@@@@进来了进来了");

                [self pushViewControllerWith:userInfo];

    }

}

代码看了半天也没啥问题。最后发现是打包的问题,测试环境直接打包就行。

但是生产的 必须一定要adhoc打包才能测试 其他方式打包安装不行。坑啊 。

其次,前后台所有的sdk版本要可以对的上的。版本不统一也可能出现推送收不到的问题。瞎忙了2天,快上线了,头都大了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值