[急] 用户注销登录后必须将app杀死才能收到推送

ios
alias
标签: #<Tag:0x00007fb846210678> #<Tag:0x00007fb846210510>

(lijingze) #1

APP安装完 第一次登录 通过标签可以收到推送,然后注销之后再登录同一个账号(或者其他账号)就收不到推送了

APP第一次运行: cityid是用户选择的

        JPUSHService.setTags([String(city.id)], alias: String(NSUserDefaults.standardUserDefaults().objectForKey(UserAlias))) { (code , tagg  , alins ) in
            print(code,    tagg,     alins)
        }

log :
[JPUSHService] app not registed, give up set tag:{( 53 )} alias:nil
这时候通过tag能收到推送

然后登录代码:

//UserAlias 参数是宏定义 保存alias

                [[NSUserDefaults standardUserDefaults] setObject:response.id forKey:UserAlias];
                NSString *cityId = [[NSUserDefaults standardUserDefaults]objectForKey:DEFAULTCITYID];
          
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    [JPUSHService setTags:[NSSet setWithObject:cityId] alias:response.id fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
                        DLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);
                    }];
                });

log :  JPUSH | E - [JPUSHService] app not registed, give up set tag:{(
    53
)} alias:e8156c46124

现在通过alias的方式 也可以收到推送

然后注销登录
1.不做任何覆盖别名之类的操作,再通过标签或者别名的方式推送,就收不到推送

NSString *cityId = [[NSUserDefaults standardUserDefaults]objectForKey:DEFAULTCITYID];
    [JPUSHService setTags:[NSSet setWithObject:cityId] alias:@"" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
        DLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);
    }];

log:  rescode: 0, 
tags: {(
    53
)}, 
alias: 

也是收不到推送

但是把app杀死 再次运行才能收的到推送
真机环境 iOS8 iOS10 都是这种状况


#2

首先需要确认的情况是:

其次来看一下你提供的信息
1、

这个日志信息实质上是提醒你设置tag失败了。至于你能收到推送,可能的原因是 之后有进一步设置成功,或者由于卸载重装的缘故,该设备之前的绑定未失效。 该情况详细说明: 怎么让别名绑定registrationID

2、

根据你的log看,实际上你的操作是 重新设置了别名,不清楚你这个日志是不是注销时操作的,该日志显示的你设置tag为53,alias为空 成功。

3、这里强调,你设置别名的方法应该写在init完成之后


(lijingze) #3

应该是我没表述清楚, 你回复的第二点理解错了
注销登录
1.不做任何覆盖别名之类的操作,再通过标签或者别名的方式推送,就收不到推送
这时候是没有log输出的 = =
2.是在注销之后把alia = @"" 执行回调DLog输出 : rescode: 0, tags: {( 53 )}, alias:


#4

:sweat_smile:明白了,你是做了两个不同情况的测试。

那么首先需要你去确认一下有没有调用反注册的代码去关闭推送。

以及你可以在每个测试的时刻,先自行在服务端调用API确认这个别名现在的绑定情况是如何的。
https://docs.jiguang.cn/jpush/server/push/rest_api_v3_device/

若别名绑定没有问题,大致约是反注册的缘故


#6

不是选项,是看你们代码里面调用了这个没有。


(lijingze) #7

已经解决了 外包公司的代码
在注销的方法里加了
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
这句代码= = 反注册…


#8

:blush:好哒,解决就好