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

在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通过此方法获取用户信息并显示,请在completionblock中返回该用户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弹出默认的本地通知提示

 您可以通过RCIMdisableMessageNotificaiton属性,关闭所有的本地通知(此时不再回调此接口)

 

 @warning 如果App在后台想使用SDK默认的本地通知提醒,需要实现用户/群组/群名片信息提供者,并返回正确的用户信息或群组信息。

 参考RCIMUserInfoDataSourceRCIMGroupInfoDataSourceRCIMGroupUserInfoDataSource

 */

-(BOOL)onRCIMCustomLocalNotification:(RCMessage*)message

                      withSenderName:(NSString *)senderName;


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

/*!

 是否关闭所有的本地通知,默认值是NO

 

 @discussion App处于后台时,默认会弹出本地通知提示,您可以通过将此属性设置为YES,关闭所有的本地通知。

 */

@property(nonatomic, assign) BOOL disableMessageNotificaiton;


我对此仍有疑问!继续追问