Skip to content
This repository has been archived by the owner on Aug 8, 2020. It is now read-only.

关于聊天消息发送状态跟踪,如 正在发送,发送成功,发送失败 #2

Open
whytimber opened this issue Mar 24, 2015 · 3 comments

Comments

@whytimber
Copy link

@jimneylee 请问您那实现了吗,有没有什么好一点思路指点一下

@jimneylee
Copy link
Owner

里面都有的,我的阿里云服务器到期了。所以网络有问题。

@whytimber
Copy link
Author

@jimneylee ,我看了一下您的源码,1、无网络的时候不能发送消息;2、有网络的时候,需要发送消息成功,才能写到数据库里,然后更新界面,现在有个问题就是网络不太顺畅的时候,聊天消息不会即时显示到界面上。

      我现在无论有无网络都会把消息存起来,然后给每条消息一个id,当消息发送成功或失败更新当前消息的消息状态,不过感觉效果不好。有时候有bug

下面是发送消息源码

  • (BOOL)growingTextView:(HPGrowingTextView *)growingTextView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
    // 由于底层点击发送会使键盘消失,故此处处理,不在growingTextViewShouldReturn中处理
    if ([text isEqualToString:TEXT_NEXT_LINE]) {
    self.nextlineRange = range;

    if (self.sendEnable) {
        if ([AFNetworkReachabilityManager sharedManager].isReachable)
        {
            if ([self checkInputTextValid:growingTextView.text]) {
                if (self.delegate && [self.delegate respondsToSelector:@selector(sendPlainMessage:)]) {
                    [self.delegate sendPlainMessage:self.textView.text];
                    // 不可重复发送,直到接收到成功或者失败回调信息
                    self.sendEnable = NO;
                }
            }
        }
        else {
            [IMUIHelper showTextMessage:@"网络不可用,无法发送"
                                 inView:[UIApplication sharedApplication].keyWindow];
        }
    }
    return NO;
    

    }

    // 删除字符
    if (0 == text.length) {
    BOOL success =
    [[IMEmotionManager sharedManager] deleteEmotionInTextView:growingTextView.internalTextView
    atRange:range];
    if (success) {
    [growingTextView refreshHeight];
    return NO;
    }
    }

    return YES;
    }

@jimneylee
Copy link
Owner

确实,体验好点,就是类似微信这样,即时显示,菊花等待,success后完成发送,失败红色感叹号提示。我之前没有优化到如此细致,只是抛砖引玉,请你自己发散再继续完善。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants