registrationID的获取问题,

registrationid
api
jpush
ios
标签: #<Tag:0x00007f83d40ab720> #<Tag:0x00007f83d40ab5e0> #<Tag:0x00007f83d40ab478> #<Tag:0x00007f83d40ab338>

(Yimi) #1

(第一次安装)如果使用自己的 4g网络去启动公司的app,可以成功注册jpush ,也可以成功获取registrationID,也可以成功的收到推送;
(第一次安装)如果使用的是公司的内网(公司内网拦截了 极光推送)去启动公司的app, 会显示连接服务器失败,打印信息如下:
| JPUSH | E - [JPUSHTcpSocket] connect failed with socket timeout

2019-05-17 17:02:27.941018+0800 HENGYING[15988:4571956] | JPUSH | E - [JPUSHTcpSocket] connect socket failed:socket timeout

2019-05-17 17:02:27.942621+0800 HENGYING[15988:4571956] | JPUSH | E - [JPUSHSessionController] 连接服务器失败

2019-05-17 17:02:27.952308+0800 HENGYING[15988:4571784] | JPUSH | D - [JPUSHUtilities] NetWork Check Result cunrrent netWork ipv4
当然这种情况下registrationID获取不到,也收不到推送。

但是有一种情况好奇怪,怎么也想不通:
如果一开始使用的是自己的4g,去启动app,可以成功获取registrationID,然后去切换网络(没有重新安装)到公司内网,重新登录一个账号,此时在公司内网情况下也能够获取到了registrationID,可以成功收到推送,但是还是会出现[JPUSHSessionController] 连接服务器失败** 这个提示
所以不是很明白,按理说公司内网是获取不到registrationID,为什么刚开始使用4g,后面用内网也可以了。
想请问下这个问题怎么回事,有知道的同学 吗??
谢谢!!


#2

registrationID 获取到之后是会保存到本地的

第一次注册是向极光服务器注册,上传设备信息,返回 ID 给你,之后就保存到本地,你 getregistrationID 是拿的本地的信息


(Yimi) #3

因为接手的是别人的代码,我看了一下,他每一次登录的时候 不是获取的本地的 getregistrationID ,是从 JPUSHService registrationIDCompletionHandler: 这个回调接口里面获取的,代码如下:

[JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
                if(resCode == 0){         
                    [parameters setValue:registrationID forKey:@"registrationId"];
                }
                else{
                }
            }];

然后再上传到服务器上。


#4

这个如果本地有保存就是从本地拿的


(Yimi) #5

意思是 如果这个registrationId在本地保存过一次,[JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
if(resCode == 0){
[parameters setValue:registrationID forKey:@“registrationId”];
}
else{
}
}];
这个接口里面的也是从本地获取的 ?(感觉不太可能)
谢谢谢谢!


#6

真的会保存在本地的。初始化的时候向服务端注册一次,服务端返回给客户端了就会保存在本地的。