获取活动的 MSConversation 以将消息发送到

Getting active MSConversation to send a message to

我正在构建一个独立的 iMessage 应用程序。我有一个继承自 MSMessagesAppViewControllerUIViewController。似乎 activeConversation 总是零。任何想法为什么?我正在模仿 Apple 如何在他们的示例冰淇淋项目中发送消息。

 MSConversation *conversation = [self activeConversation];
    if (conversation) {
        MSMessageTemplateLayout *layout = [[MSMessageTemplateLayout alloc] init];
        layout.caption = @"Caption";
        layout.subcaption = @"subcaption";

        MSMessage *message = [[MSMessage alloc] init];
        message.URL = [NSURL URLWithString:@"www.example.com"];
        message.layout = layout;

        [conversation insertMessage:message completionHandler:^(NSError *error) {
            if (error) {
                NSLog(@"Error sending message %@", [error localizedDescription]);
            }
        }];
    }
    else {
        NSLog(@"No &%#%&^# conversation found");
    }

可能值得注意的是 UIViewController 嵌入在 UINavigationController 中。

原来你只能有一个 MSMessagesAppViewController 的实例,它实际上会与对话线程交互。其他控制器可以从 MSMessagesAppViewController 继承,但对话协议的 none 或 compact/expanded 转换委托方法将在这些实例中触发,只是扩展遇到的第一个实例。