当前知识库站点已不再维护。请移步新版知识库:https://help.rongcloud.cn/

接收本地通知时,不弹通知栏的排查步骤。

在App刚进入后台,接收本地通知时,消息可以收到,但是不弹通知栏。
发布时间: 2015-12-24 11:51

回答:

1、检查用户信息或群组信息是否可以正常提供。

如果是来自单聊、讨论组的消息,在“获取用户信息”这个函数里面加断点,排查最后的返回值是否正确。

/*!
 获取用户信息
 
 @param userId      用户ID
 @param completion  获取用户信息完成之后需要执行的Block [userInfo:该用户ID对应的用户信息]
 
 @discussion SDK通过此方法获取用户信息并显示,请在completion中返回该用户ID对应的用户信息。
 在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。
 */
- (void)getUserInfoWithUserId:(NSString *)userId
                   completion:(void (^)(RCUserInfo *userInfo))completion;



如果是来自群组的消息,在“获取群组信息”这个函数里面加断点,排查最后的返回值是否正确。

/*!
 获取群组信息
 
 @param groupId     群组ID
 @param completion  获取群组信息完成之后需要执行的Block [groupInfo:该群组ID对应的群组信息]
 
 @discussion SDK通过此方法获取用户信息并显示,请在completion的block中返回该用户ID对应的用户信息。
 在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。
 */
- (void)getGroupInfoWithGroupId:(NSString *)groupId
                     completion:(void (^)(RCGroup *groupInfo))completion;



2.是否重写了下面这个函数,返回值是否正确。“提示;当返回值为YES时,SDK针对此消息不再弹本地通知提示”

/*!
 当App处于后台时,接收到消息并弹出本地通知的回调方法
 @param message     接收到的消息
 @param senderName  消息发送者的用户名称
 @return            当返回值为NO时,SDK会弹出默认的本地通知提示;当返回值为YES时,SDK针对此消息不再弹本地通知提示
 @discussion 如果您设置了IMKit消息监听之后,当App处于后台,收到消息时弹出本地通知之前,会执行此方法。
 如果App没有实现此方法,SDK会弹出默认的本地通知提示。
 流程:
 SDK接收到消息 -> App处于后台状态 -> 通过用户/群组/群名片信息提供者获取消息的用户/群组/群名片信息
 -> 用户/群组信息为空 -> 不弹出本地通知
 -> 用户/群组信息存在 -> 回调此方法准备弹出本地通知 -> App实现并返回YES        -> SDK不再弹出此消息的本地通知
                                             -> App未实现此方法或者返回NO -> SDK弹出默认的本地通知提示
 您可以通过RCIM的disableMessageNotificaiton属性,关闭所有的本地通知(此时不再回调此接口)。
 
 @warning 如果App在后台想使用SDK默认的本地通知提醒,需要实现用户/群组/群名片信息提供者,并返回正确的用户信息或群组信息。
 参考RCIMUserInfoDataSource、RCIMGroupInfoDataSource与RCIMGroupUserInfoDataSource
 */
-(BOOL)onRCIMCustomLocalNotification:(RCMessage*)message
                      withSenderName:(NSString *)senderName;



3.是否调用了下面函数,关闭了本地通知。

/*!
 是否关闭所有的本地通知,默认值是NO
 
 @discussion 当App处于后台时,默认会弹出本地通知提示,您可以通过将此属性设置为YES,关闭所有的本地通知。
 */
@property(nonatomic, assign) BOOL disableMessageNotificaiton;