ios - 如何在 iOS 应用和 macOS 应用之间共享数据?
问题描述
我有一个使用 MusicKit API 播放音乐的 iOS 应用程序。我想为 macOS 编写一个与 iOS 应用程序通信的配套应用程序。
例如,我的 iPhone 正在播放音乐。当新曲目开始播放时,macOS 应用程序中会显示一条通知。我可以单击 macOS 上的按钮跳到手机上的下一首曲目。
在这样的设备之间进行通信的最佳方式是什么?
我认为有两个重要的用例:
- 用于帐户详细信息和偏好等静态数据。
- 用于实时消息。
我可以通过远程服务器完成所有操作,但我想知道是否有更好的方法。
解决方案
用户需要在 iOS 和 macOS 上安装您的应用,并且需要单独授予接收推送通知的权限。
请记住,Apple 不保证所有远程推送通知的实时交付或交付。如果在短时间内发送了许多远程推送通知,APNS 也可能会丢弃这些通知。不建议将 APNS 用于用户发起的操作,例如音乐曲目控制,因为用户期望(立即)结果。应使用 Web 套接字或服务器与其客户端之间的其他永久连接。
在一台设备上播放音乐,在另一台设备上停止:
- 请求发送远程推送通知的权限,以获取每个设备的唯一 APNS 令牌。
- 将设备令牌存储在您的服务器上。
- 让 iOS 客户端通知服务器用户开始播放音乐。
- 使服务器通过 APNS 向 macOS 客户端发送远程推送通知。
- 在 macOS 客户端上,处理用户与推送通知的交互,并将用户操作报告回服务器。
- 让服务器通过 Web 套接字连接通知 iOS 用户交互,而不是远程推送通知,以确保客户端处理用户操作。
- 让 iOS 客户端跳过曲目。
同步用户偏好:
- 在服务器上存储每次更改的首选项。
- 在每次应用程序启动时从服务器请求首选项,或者在首选项发生变化时通过服务器的远程推送通知或通过 Web 套接字连接触发请求来动态请求首选项,具体取决于同步的实时性。
推荐阅读
- python - 控制台关闭后保持 Python 程序运行
- delphi - Fastreport : 详细数据:限制记录数
- javascript - fs.WriteFile() 返回 NULL 并且不写入 JSON 文件
- google-analytics - Google Analytics(分析)在细分中显示令人困惑的数据
- azure - 从 AzureDevOps Replace Tokens 在 appsettings 中设置 JSON 键
- arrays - 关于 C 数组语法的问题
- python - 从组件类访问复合类字段
- oracle - Oracle APEX 5.1 在选项卡容器中选择特定选项卡
- c# - CsvHelper 和 IEnumerable