Tag: Mac Apps

在Mac App上测试Phoenix频道

在Coletiv的当前项目之一中,我们需要不断保持数据在多个移动设备之间的同步。 我们想到的使状态保持最新的第一个解决方案是每分钟与推送通知相关的服务器轮询服务器。 显然,就性能和可靠性而言,这并不是最佳的解决方案。 由于我们的后端是使用Phoenix制造的,因此最初的天真解决方案自然就演变为使用Phoenix Channels。 在本文中,我们将介绍我们使用游戏“史莱姆足球”实现概念验证以测试Phoenix Channel的经验。 对于两个玩家来说,这是一个简单的游戏,每个人控制一个粘液,目标是进球。 概念证明已在Swift中作为Mac应用程序实现,但可以轻松地以您选择的任何其他语言或平台实现。 这个想法是让游戏的两个实例在不同的计算机上运行,​​每个实例都将通过Phoenix频道连接到Phoenix服务器。 服务器负责管理游戏得分并处理两个玩家之间的通信。 有几个Swift开源项目可以帮助进行渠道沟通: PhoenixWebSocket 鸟鸣 Swift Phoenix客户 我们之所以选择使用Birdsong,只是因为我们认为目前最适合我们需求的项目。 它具有简洁的代码样式,对服务器执行定期ping操作,并允许进行一些自定义操作,例如处理断开操作。 如果要继续学习,可以在此处找到服务器源代码,在此处找到客户端源代码。 下图描述了游戏过程中Mac客户端与服务器之间的一般通信流程。 服务器 要在Phoenix中定义一个新通道,我们只需将此行添加到UserSocket.ex中: 频道(“游戏:*”,SuperSlimeGameWeb.GameChannel) 我们的连接功能非常简单,因为我们选择忽略身份验证步骤,因为这将意味着需要进一步的开发,而这并不是我们进行此测试的目标,但是如果您需要身份验证,则可以在此进行检查。 客户 在connect方法中,我们定义了onConnect和onDisconnect处理程序。 连接/断开套接字后,将调用这些闭包。 在我们的测试中,我们将在连接套接字后立即加入通道。 当插座断开连接时,将在短暂的延迟后执行重新连接。 服务器 该应用程序的主要部分是加入功能,玩家可以在其中加入游戏。 信道术语和有效载荷结构定义如下: 通道命名 “游戏:” 代码 有效载荷结构 %{“电子邮件” =>电子邮件} 游戏代码game:[a_code]用于检查游戏是否已经存在于为管理游戏而创建的GameState代理进程中。 如果游戏已经存在,我们将添加通过有效负载结构传递的新玩家,否则将创建新游戏并添加新玩家。 GameState代理用于保存游戏和比赛玩家,它作为受监督的子进程与服务器一起启动。 要启动代理,将工作器添加到Application.ex中,如下所示: 工作者(SuperSlimeGame.GameState,[]) 游戏状态代理实施 客户 在join方法中,我们定义了通道事件监听器。 如果从通道返回了特定的操作(即播放器已移动),则将执行这些侦听器。 验证套接字的状态以确保维持连接的持久性很重要。 服务器 收到playerAction命令后,服务器会将其广播给所有加入该频道的播放器。 客户 每次更新场景时,都会向通道发送一条消息,其中包含本地玩家的坐标和动作。 身份验证方法-连接与连接 在此示例中,我们没有在通道连接中添加任何安全性,但这在现实环境中是必须具有的。 在Coletiv开发的其他项目中,我们需要验证用户身份以允许其访问其资源。 […]

借方和贷方2.10.2:连续性相机,Siri表盘支持

这是一个相对较小的发行版,其中包括针对macOS和watchOS的两个不错的功能。 Mac:连续性相机支持 在Mac上,您现在可以使用macOS Mojave中添加的Continuity Camera。 这是一项很棒的功能,可让您在iPhone或iPad上拍照或扫描文档,然后将这些图片立即返回Mac。 在借方和贷方中,这用于向交易中添加新的附件。 要使用Continuity Camera,请开始创建新交易,然后单击其他选项中的“ +”以添加附件。 如屏幕截图所示,您将看到一个使用附近的iOS设备的选项: Siri表盘 无论如何,Siri都不具有Apple Watch上最漂亮的表盘。 但这是实用的,我个人将其用作辅助表盘,以快速查看当前的相关信息。 您可以通过从Apple Watch的屏幕边缘向左或向右滑动来在表盘表面之间切换。 因此,现在借方和贷方将要求Siri在此表盘上显示有关即将进行的预定交易的信息。 无法保证Siri始终会显示它,但仍然应该经常发生。 请注意,您需要为计划的交易启用“到期时通知”选项,才能使用该功能。 这是此表盘上的“借项和贷项”外观: 我还要提到Siri表盘每20–30分钟更新一次,因此您可能不会立即看到更新的信息。 特别感谢 我想对使用借记卡和借记卡的人表示感谢,并通过订阅高级版来表示支持。 正是这种支持使我能够继续向应用程序提供更新,非常感谢。