0

所以创建了一个简单的应用程序来测试 sendbird 服务,它们看起来最好,所以我已经阅读了他们的文档,并且在这一刻。我做了一些东西..我在那里遇到了问题,我什么时候必须打电话给 didReceiveMessage 或者为什么我的不工作?

我的代码

    - (IBAction)connnect:(id)sender {


    [SBDOpenChannel getChannelWithUrl:@"iDict" completionHandler:^(SBDOpenChannel * _Nullable channel, SBDError * _Nullable error) {
        if (error != nil) {
            NSLog(@"Error 1 : %@", error.localizedDescription);
            return;
        }

        [channel enterChannelWithCompletionHandler:^(SBDError * _Nullable error) {
            if (error != nil) {
                NSLog(@"Error: %@", error);
                return;
            }
            NSLog(@"Connected to Channel : %@",channel.channelUrl);



            // ...
        }];
    }];


}

- (IBAction)sendMessage:(id)sender {

    [self.channel sendUserMessage:@"pop" data:@"Hey" completionHandler:^(SBDUserMessage * _Nullable userMessage, SBDError * _Nullable error) {
        if (error != nil) {
            NSLog(@"Error: %@", error);
            return;


        }

    }];
}



- (void)channel:(SBDBaseChannel * _Nonnull)sender didReceiveMessage:(SBDBaseMessage * _Nonnull)message {
    if (sender == self.channel) {
    NSLog(@"From Button.Message Received From %@ message is : %@ in channel :",sender.description,message.description);
    } else {
        NSLog(@"Failed");
    }
}
@end
4

1 回答 1

1

您是否将您当前的班级注册为频道的代表?您需要这样做,以便当通道收到消息时,它将使用收到的消息调用您的委托。

所以在你的类中,我假设它是一个 UIViewController,声明它符合如下:

@interface OpenChannelViewController : ViewController<SBDChannelDelegate>
@end

在 viewDidLoad 的某个地方,您应该将此类添加到通道委托中。

- (void)viewDidLoad {
  [SBDMain addChannelDelegate:self identifier:UNIQUE_HANDLER_ID];
}

现在您应该收到消息。信息取自这里: https ://docs.sendbird.com/ios?_ga=1.152151677.594130729.1491427400#open_channel_3_receiving_messages

祝你好运!

于 2017-04-05T21:38:56.987 回答