im登陆后接收消息经常会在线消息收到,apns的推送消息也会收到

ios
标签: #<Tag:0x00007fca619aa438>

(1sc_china) #1




求解。为什么我的账号是在线的,apns的推送消息按理来说不应该是我不在线的情况下才推的吗


(1sc_china) #2

@Lris 大佬 求回复


#3

你的手机系统版本是不是 iOS10 以上?然后同时集成了 JPush,实现了 iOS 10 的前台展示通知的代码?

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler; 
// NSDictionary * userInfo = notification.request.content.userInfo; 
// APNs 内容为 userInfo

(1sc_china) #4

你好。我测试的手机是 8.3的系统。项目确实是集成了jpush呢


#5

你所说的在线的时候收到了 APNS 通知,这个在线状态具体是指的什么状态?


(1sc_china) #6

就是我登陆后的状态 app也是打开在前台的。这时候应该是账号是在线的吧。但是这时如果另一台设备给我发消息的话。我这边有很大概率是onReceiveMessage:error: 这个方法会回调 apns的系统方法也会收到一条push。


#7

你确定你这个手机的 iOS 系统是 8.3?

你使用的 SDK 版本多少?

你收到的 APNS 消息,是会在通知栏展示出来,还是只会在日志里面打印并没有提醒出来?

App 处于前台是在会话页面还是退出了会话页面?


(1sc_china) #8

恩,确实测试手机系统是 8.3的
SDK版本:
------------------- JMessage SDK --------------------
------------- JMessage SDK version:3.8.0, build:244 ---------
------------- JCore Lib Version:1.2.6, build:68 ---------
------------- AppKey:ba************0e ---------

。因为手机是8。3的系统,所在 不会在通知栏展示出来,只是会在 日志里面打印并没有提醒出来。
但是如果我用 10的系统的话。通知栏就会展示出来.
APP在前台时。是退出了会话界面的


(1sc_china) #9

我刚刚测试了一下。这个推送又不会推了。只是有时候会推,,不是必现的 :joy:


#10

确认一下你是不是实现了前台展示的方法呢?你现在测试没有复现了,这个方法是不是仍然有设置着?

目前复现到同时收到会话和 APNS 通知的消息的 MessageID有哪些

// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center  willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
  // Required
  NSDictionary * userInfo = notification.request.content.userInfo;
  if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
    [JPUSHService handleRemoteNotification:userInfo];
  }
  else {
     // 本地通知
  }
  completionHandler(UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有 Badge、Sound、Alert 三种类型可以选择设置
}
···

(1sc_china) #11

你的意思是这个方法不需要是吗?
我现在还没有复现到。看等下会不会有出现。我把MessageID发你


(1sc_china) #12

刚刚复现了 msgid:2579422505 2581360988


#13

你这个打印出 APNS 的消息的日志,看下完整的日志信息,是我们的 Jcore 打印的还是你自己打印的


(1sc_china) #14

[AppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler:] [Line 591] -[AppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler:]:{
“_j_business” = 32;
“_j_msgid” = 2580262743;
“_j_type” = jmessage;
“_j_uid” = 15966279010;
aps = {
alert = {
body = “\U674e\U4e1c\U7389: Ok”;
};
badge = 9;
sound = default;
};
}

APNS消息是我自己打印的出来的

| JIGUANG | D - [JIGUANGUtilities] JCOREPostNotificationWithUserInfo name: kJPFNetworkDidReceiveIMMessageNotification {
message = “text->{“version”:1,“target_type”:“single”,“target_id”:“20f92b96_7001_4825_96f5_da5f2a2201a4”,“target_name”:”\U5218\U6b63\U4e49",“from_type”:“user”,“from_id”:“6aa1c813_6edb_4d75_a114_e37ff67d065b”,“sui_mtime”:1548309912,“from_name”:"\U674e\U4e1c\U7389",“from_platform”:“i”,“create_time”:1548309923673,“msg_type”:“text”,“set_from_name”:0,“msg_body”:{“text”:“Ok”},“from_appkey”:“ba205940a8a9e42cbe727d0e”,“target_appkey”:“ba205940a8a9e42cbe727d0e”},ctime->1548309923,ctimeMs->1548309923728,fromUid->209297533,msgID->2580262743,targetUid->0,type->3,msgLevel->0,rid->2580262743";
}
这个是相同的消息 一个走apns 一个走onReceiveMessage:error:


(1sc_china) #15

@Lris 大佬 没回复了吗,求解答…


#16

你这是从系统接口获取的数据吗!!?如果是的话我这边需要找后台看下为什么会下发通知了

不过暂时来说应该对你的展示没影响吧,不会弹窗。

现在还能复现到吗?可以给一下最新复现到的信息不,我找下后台,Appkey、MessageID、username、 UID 信息。


(1sc_china) #17

是直接用的你们提供的sdk的接口呢。有影响呢。因为这个有一个未读消息数的统计,如果在线消息和推送消息同时都收到的情况下。这时候统计的未读消息数会不准


#18

提供下最新复现到的信息,我提给后台查一下为什么会下发通知吧~


(1sc_china) #19

AppKey:ba205940a8a9e42cbe727d0e
MessageID: 2623137290
uid:19719074120
registrationID:141fe1da9ef01a2b80d
username: 20f92b96_7001_4825_96f5_da5f2a2201a4


#20

对了,你把这个方法去掉再看看呢?

// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center  willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
  // Required
  NSDictionary * userInfo = notification.request.content.userInfo;
  if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
    [JPUSHService handleRemoteNotification:userInfo];
  }
  else {
     // 本地通知
  }
  completionHandler(UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有 Badge、Sound、Alert 三种类型可以选择设置
}
···