全部文档

更新时间: 2021-03-08

# 功能描述

当 App 进入后台,SDK 处于后台活跃状态,App 会使用融云的长连接通道接收消息,此时 SDK 收到消息会弹出本地通知。

流转图:

iOS 端会在 2 分钟之后主动断开,之后的消息会通过 APNs 通道进行发送。

# 配置说明

您可以通过将此属性设置为 YES,关闭所有的本地通知。

@property (nonatomic, assign) BOOL disableMessageNotificaiton;
已复制
1

# 回调方法

如果您设置了IMKit消息监听之后,当App处于后台,收到消息时弹出本地通知之前,会执行此方法。如果App没有实现此方法,SDK会弹出默认的本地通知提示。

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

回调流程:

# 参数说明

参数说明:

参数 类型 说明
message RCMessage (opens new window) 接收到的消息
senderName NSString 消息发送者的用户名称

返回参数说明

类型 说明
BOOL 是否弹出本地通知提示

当返回值为 NO 时,SDK 会弹出默认的本地通知提示;当返回值为 YES 时,SDK 针对此消息不再弹本地通知提示

# 代码示例
- (BOOL)onRCIMCustomLocalNotification:(RCMessage *)message withSenderName:(NSString *)senderName{
    return YES;
}
已复制
1
2
3
# 获取通知内容
# 内容格式

SDK 默认的本地通知 UILocalNotification 字段信息如下:

参数 类型 说明
alertBody String 在通知栏显示的内容
userInfo NSDictionary 消息的附加信息

userInfo 说明:

参数 类型 说明
cType String 会话类型。PR 指单聊、 DS 指讨论组、 GRP 指群组、 CS 指客服、SYS 指系统会话、 MC 指应用内公众服务、 MP 指跨应用公众服务。
fId String 消息发送者的用户 ID。
oName String 消息类型,参考融云消息类型表.消息标志;可自定义消息类型。
tId String 为 Target ID。
# 内容获取

点击通知栏的本地通知时,如果 App 未被系统冻结,开发者可使用下面方式获取:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

    NSDictionary *msgDic = [notification.userInfo objectForKey:@"rc"];
    NSString *cType = [msgDic objectForKey:@"cType"];
    NSString *fId = [msgDic objectForKey:@"fId"];
    NSString *oName = [msgDic objectForKey:@"oName"];
    NSString *targetId = [msgDic objectForKey:@"tId"];//Target ID 。

    /*
    cType根据得到字段转换成相应的conversationType
    其余信息可根据需求进行相应的操作
    */
    RCConversationViewController *chat = [[RCConversationViewController alloc]init];
    //设置会话的类型,如单聊、群聊、客服,为转换后的值
    chat.conversationType = cType_Value;
    //设置会话的目标会话ID。(单聊、客服、公众服务会话为对方的ID,群聊为会话的ID)   
    chat.targetId = targetId;
    //设置聊天会话界面要显示的标题
    chat.title = @"想显示的会话标题";
    //显示聊天会话界面
    if ([self.window.rootViewController isKindOfClass: [RCDNavigationViewController class]]) {
        [(RCDNavigationViewController *)self.window.rootViewController pushViewController:chat animated:YES];
    } else {
        //........
    }
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

点击通知栏的本地通知时,如果此时 App 已经被系统冻结,开发者可使用下面方式获取:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // 本地通知的内容
    UILocalNotification *localNotification =  launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
    //解析同理

    return YES;
}
已复制
1
2
3
4
5
6
7
8

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助