XMPPElementReceipt *receipt = [XMPPElementReceiptnew];
// * - Do an instantaneous check (pass timeout == 0)
// * - Wait until the element has been sent (pass timeout < 0)
// * - Wait up to a certain amount of time (pass timeout > 0)
[mStream sendElement:message andGetReceipt:&receipt];
[receipt wait:-1];
// * If you later want to check to see if the element has been sent:
// *
// * if ([receipt wait:0]) {
// * // Element has been sent
// * }
// *
// * If you later want to wait until the element has been sent:
// *
// * if ([receipt wait:-1]) {
// * // Element was sent
// * } else {
// * // Element failed to send due to disconnection
// * }
if ([receipt wait:-1])
{
TTLog(@"was sent");
}
else{
TTLog(@"sent faild");
}
1,receipt wait = 0,即时检查,不过要 结合timer,不然的话,马上检查一定发送失败的,
2,receipt wait > 0,等上几分钟检查,如果是 放到主线程,会卡几分钟的,如果改成异步的是没有问题的,不过,即便是异步,设置等待的时间太短,即便发送成功了,也会返回no 的
BOOL messageState =[receipt wait:0.0000001];
if (messageState)
{
TTLog(@"was sent");
}
else{
TTLog(@"sent faild");
}
3,receipt wait < 0,等待发送完检查,同样的放到主线程,会卡的,同上,
原文:http://www.cnblogs.com/guligei/p/3513908.html