首页 > 解决方案 > 如何在 iOS 应用和 macOS 应用之间共享数据?

问题描述

我有一个使用 MusicKit API 播放音乐的 iOS 应用程序。我想为 macOS 编写一个与 iOS 应用程序通信的配套应用程序。

例如,我的 iPhone 正在播放音乐。当新曲目开始播放时,macOS 应用程序中会显示一条通知。我可以单击 macOS 上的按钮跳到手机上的下一首曲目。

在这样的设备之间进行通信的最佳方式是什么?

我认为有两个重要的用例:

  1. 用于帐户详细信息和偏好等静态数据。
  2. 用于实时消息。

我可以通过远程服务器完成所有操作,但我想知道是否有更好的方法。

标签: iosmacos

解决方案


用户需要在 iOS 和 macOS 上安装您的应用,并且需要单独授予接收推送通知的权限。

请记住,Apple 不保证所有远程推送通知的实时交付或交付。如果在短时间内发送了许多远程推送通知,APNS 也可能会丢弃这些通知。不建议将 APNS 用于用户发起的操作,例如音乐曲目控制,因为用户期望(立即)结果。应使用 Web 套接字或服务器与其客户端之间的其他永久连接。

在一台设备上播放音乐,在另一台设备上停止:

  1. 请求发送远程推送通知的权限,以获取每个设备的唯一 APNS 令牌。
  2. 将设备令牌存储在您的服务器上。
  3. 让 iOS 客户端通知服务器用户开始播放音乐。
  4. 使服务器通过 APNS 向 macOS 客户端发送远程推送通知。
  5. 在 macOS 客户端上,处理用户与推送通知的交互,并将用户操作报告回服务器。
  6. 让服务器通过 Web 套接字连接通知 iOS 用户交互,而不是远程推送通知,以确保客户端处理用户操作。
  7. 让 iOS 客户端跳过曲目。

同步用户偏好:

  1. 在服务器上存储每次更改的首选项。
  2. 在每次应用程序启动时从服务器请求首选项,或者在首选项发生变化时通过服务器的远程推送通知或通过 Web 套接字连接触发请求来动态请求首选项,具体取决于同步的实时性。

推荐阅读