在macOS上以预填充字段以编程方式打开消息

时间:2019-01-28 14:44:57

标签: macos imessage nsworkspace appleevents nsappleeventdescriptor

我正在尝试使QR码在macOS上可操作。我发现我可以使用imessage作为URI或将sms作为URI来打开Messages应用程序:

NSString *message = @"imessage://your@appleid.com";
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:message]];


NSString *message = @"sms://your@appleid.com";
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:message]];

但是,我无法添加任何参数,因此可以预先填充文本正文。如何预填充身体?

sms URI仅从10.14 Mojave开始存在。

PS:对于iMessage URI,用逗号分隔电子邮件将进行群聊。

处理URL(_handleGURL ..)的Messages.app方法获取以下NSAppleEventDescriptor:

(lldb) po $rdx
<NSAppleEventDescriptor: 'GURL'\'GURL'{ '----':"imessage://your@appleid.com", 'qtnp':'qtnd'($62706C6973743030D2010203045F10214C5351756172616E74696E654167656E7442756E646C654964656E7469666965725F10154C5351756172616E74696E654167656E744E616D655F1011636F6D2E6872756261736B6F2E7363616E50080D31495D000000000000010100000000000000050000000000000000000000000000005E$) }>

enter image description here

1 个答案:

答案 0 :(得分:0)

根据业务聊天框架的Starting a Chat from a URL

  

您可以在URL中包含可选的查询字符串参数:“ biz-intent-id”   “ biz-group-id”   “身体”

NSURL *URL = [NSURL URLWithString:@"sms:test@test.com&body=Order%20additional%20credit%20card"];
[[NSWorkspace sharedWorkspace] openURL:URL];

但是,这对于iMessage URI无效(内部实现将消息值设置为nil)

Messages app