在 iMessage 中的活动对话中设置文本

Set text in Active Conversation in iMessage

我写了一些代码来将文本添加到我的 iMessage 扩展程序中的 Messages.app 输入字段。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"didSelect called");
    NSLog(@"%d", 1);
    [[self activeConversation] insertText:@"https://google.com" completionHandler:^(NSError * error) {
        NSLog(@"Error happened");
        NSLog(@"Error: %@", error);
    }];
    NSLog(@"%d", 2);
}

奇怪的是所有正常的日志都在发生。该应用程序将记录 "didSelect called"、“1”和“2”。但是,消息 - Google url - 没有被插入,错误日志也没有显示。所以我真的不知道出了什么问题。知道我做错了什么吗?

解决方案#1

  1. MessagesViewController 中的正确引用发送到您的视图控制器。
  2. 检查 activeConversation 值为 nil:

if ([self activeConversation] != nil) {
    [[self activeConversation] insertText:@"Some text" completionHandler:^(NSError * _Nullable error) {
        NSLog(@"error: %@", error.localizedDescription);
    }];
} else {
    NSLog(@"Conversation is nil");
}

解决方案#2

  1. iMessage 扩展名称 space 中创建 Singleton
  2. In MessagesViewController in - (void)viewDidLoad 设置参考 你的MSConversation[[Conversation shared] activeConversation] = [self activeConversation];
  3. 使用[[Conversation shared] activeConversation] insertText: .... ]; 用于从任何控制器发送消息。