【问题标题】:Checking SMS sending status iPhone检查短信发送状态 iPhone
【发布时间】:2011-10-25 03:57:01
【问题描述】:

可以查看短信发送状态吗?例如

MFMessageComposeViewController * smsPicker = [[MFMessageComposeViewController alloc] init];

smsPicker.messageComposeDelegate = self;

smsPicker.body = @"Body";

[self presentModalViewController:smsPicker animated:YES];

[smsPicker release];

我不知道为什么,但是代表 - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult) 结果;在发送前执行,如果用户取消 SMS 则工作。

我需要知道短信是发送还是失败(例如,手机网络错误或有什么问题)。感谢您以后的帮助!

【问题讨论】:

    标签: iphone sms


    【解决方案1】:

    您可以使用result 参数messageComposeViewController:didFinishWithResult: 来检查消息的状态。它的类型是MessageComposeResult:

    enum MessageComposeResult {
       MessageComposeResultCancelled,
       MessageComposeResultSent,
       MessageComposeResultFailed
    };
    

    请记住,MessageComposeResultSent 可能仅被解释为成功排队等待稍后发送的消息。实际发送将在设备能够发送时发生。


    如何检查设备是否可以发送?

    要测试设备是否能够发送短信,请使用MFMessageComposeViewControllercanSendText 类方法。根据文档,您应该始终在尝试呈现消息撰写视图控制器之前调用此方法。

    但是,这不会告诉您设备是否能够发送消息现在(如果您在考虑此声明的情况下询问:实际发送将在设备启动时发生可以发送)。

    【讨论】:

    • 正如我所说,它仅适用于已取消。它在 SMS 发送之前返回状态 Sent。这就是我问的原因。
    • 那是因为MessageComposeResultSent表示消息已成功排队或发送。
    • 如何检查设备是否可以发送?
    • 我明白了。谢谢你。很有帮助。
    【解决方案2】:

    不幸的是,它至少没有考虑到手机网络中断。例如,在飞行模式下,代理收到 MessageComposeResultSent!

    我已经为this 提交了一份雷达文件。复制它可能会更快地解决问题。

    【讨论】:

    • 谢谢!如果您能找到解决方案,请通知我。
    • 目前我使用 MessageComposeResult 的面值,不做任何网络可用性检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多