【问题标题】:Can I use Peertalk or usbmuxd in a sandboxed macOS app?我可以在沙盒 macOS 应用程序中使用 Peertalk 或 usbmuxd 吗?
【发布时间】:2017-04-21 07:22:29
【问题描述】:

Peertalk 是一个库,它通过闪电/USB 电缆在 Mac 和 iOS 设备之间提供通信。它通过这样做来建立连接:

  struct sockaddr_un addr;
  addr.sun_family = AF_UNIX;
  strcpy(addr.sun_path, "/var/run/usbmuxd");
  socklen_t socklen = sizeof(addr);
  if (connect(fd, (struct sockaddr*)&addr, socklen) == -1) {
    if (error) *error = [[NSError alloc] initWithDomain:NSPOSIXErrorDomain code:errno userInfo:nil];
    return NO;
  }

这在非沙盒应用中很好。在沙盒应用中,即使允许网络和 USB,它也会失败并显示错误号 EPERM - 不允许操作。

有没有办法让它在沙盒 Mac 应用程序中工作?


更新:

.entitlements 添加临时异常无效:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <true/>
    <key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
    <string>/var/run/usbmuxd</string>
</dict>
</plist>

【问题讨论】:

  • 路径不应该是“/private/var/run/usbmuxd”吗?
  • @superg 是一回事 - /private 文件系统包含指向根文件系统上文件的链接。
  • 您好...您对此有任何答复吗?我们还试图让 PeerTalk 在沙盒 MacOS 应用程序上工作。感谢分享!干杯
  • 我使用了一个非沙盒中继应用,用户可以在应用商店之外下载和安装。
  • 有什么方法可以从应用商店提交或下载?请提出建议。

标签: ios macos usb appstore-sandbox


【解决方案1】:

不,这是不可能的。

我最终找到的解决方案是用户可以手动下载并安装为非沙盒应用程序的中继应用程序。主应用通过网络环回地址与中继通信,中继通过usbmuxd与设备通信。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多