iOS设备上仍收到附近发布的出版物

iOS设备上仍收到附近发布的出版物,ios,google-nearby,Ios,Google Nearby,我正在编写一个使用谷歌API的iOS应用程序。我注意到,有时当一台设备启动订阅并从附近的另一台设备(两台iOS设备)获取出版物时,订阅设备可能会从另一台设备获取已发布的出版物(从另一台设备以前的运行中,这显然是由我的应用程序发布的)。我在发布时发送UUID,我肯定会看到订阅者收到旧的(即以前的运行)UUID。 我遇到的解释“会话”分为10分钟,这也许可以解释这个问题,但答案似乎只与Android有关。 我注意到附近的iOS仍处于测试阶段,这可能是一个bug吗 有什么想法吗?谢谢。以下是可能导致您

我正在编写一个使用谷歌API的iOS应用程序。我注意到,有时当一台设备启动订阅并从附近的另一台设备(两台iOS设备)获取出版物时,订阅设备可能会从另一台设备获取已发布的出版物(从另一台设备以前的运行中,这显然是由我的应用程序发布的)。我在发布时发送UUID,我肯定会看到订阅者收到旧的(即以前的运行)UUID。
我遇到的解释“会话”分为10分钟,这也许可以解释这个问题,但答案似乎只与Android有关。 我注意到附近的iOS仍处于测试阶段,这可能是一个bug吗


有什么想法吗?谢谢。

以下是可能导致您看到的问题的情况: -如果发布应用程序在发布处于活动状态时被终止。例如,如果您滑动以终止它,或者如果您从调试器终止它。 -如果网络连接丢失或损坏到足以阻止对附近服务器的呼叫

当发布对象被解除分配时,它会调用附近的服务器来撤销已发布的消息,订阅服务器将不再接收已发布的消息。在上述场景中,不会调用服务器,因此发布会持续一段时间。在iOS上,“一段时间”的时间是5分钟


大约5分钟后问题是否消失?

以下是可能导致您看到的问题的情况: -如果发布应用程序在发布处于活动状态时被终止。例如,如果您滑动以终止它,或者如果您从调试器终止它。 -如果网络连接丢失或损坏到足以阻止对附近服务器的呼叫

当发布对象被解除分配时,它会调用附近的服务器来撤销已发布的消息,订阅服务器将不再接收已发布的消息。在上述场景中,不会调用服务器,因此发布会持续一段时间。在iOS上,“一段时间”的时间是5分钟


大约5分钟后问题就消失了吗?

几分钟后问题就消失了。因此,将发布设置为零是不够的,您必须给它足够的时间通知服务器,如果用户杀死应用程序或将其放在后台,这是不可能的,对吗?当应用程序被推到后台时,它应该能够成功地调用服务器(我们使用它实际上是为了确保它运行足够长)。但是如果它在发布处于活动状态时被杀死,我们将无能为力。你能确定没有其他引用发布对象吗?我想是的。在我的AppDelegate.ApplicationIdentinterBackground中,我将所有发布者、订阅者甚至GNEMessageManager设置为零,这样背景中就不会有任何GNS活动(这样做是为了遵循视频中给出的提示,即在Android onPause上取消发布和取消订阅)。我的调试还显示我的发布服务器当时为零。pub和sub仅在iOS上是前台,因此当应用程序转到后台时,没有必要禁用它们;这由附近的消息自动处理。(在iOS上,我们可以为您处理更多的状态转换,因此它比Android更易于使用。)您能否尝试删除后台/前台处理,看看问题是否消失。正如你所描述的,我试图复制它,但我的出版物在背景设置时仍然被禁用,即使我使用网络链接调节器模拟了一个糟糕的网络。我已经删除了我的背景应用程序处理。当在一台正在广播的设备上最小化应用程序时,我预计在另一台较早拾取该消息的设备上会发生消息丢失。我在5分钟后才收到丢失的消息,就像我在后台处理一样。信息丢失不应该立即发生吗?这是否意味着,正如您所建议的,它没有时间通知服务器并撤销消息?我没有关闭应用程序,只是最小化了它。即使我对出版物有另一个引用,所有出版物都应该像你说的那样自动处理。问题在几分钟后就消失了。因此,将发布设置为零是不够的,您必须给它足够的时间通知服务器,如果用户杀死应用程序或将其放在后台,这是不可能的,对吗?当应用程序被推到后台时,它应该能够成功地调用服务器(我们使用它实际上是为了确保它运行足够长)。但是如果它在发布处于活动状态时被杀死,我们将无能为力。你能确定没有其他引用发布对象吗?我想是的。在我的AppDelegate.ApplicationIdentinterBackground中,我将所有发布者、订阅者甚至GNEMessageManager设置为零,这样背景中就不会有任何GNS活动(这样做是为了遵循视频中给出的提示,即在Android onPause上取消发布和取消订阅)。我的调试还显示我的发布服务器当时为零。pub和sub仅在iOS上是前台,因此当应用程序转到后台时,没有必要禁用它们;这由附近的消息自动处理。(在iOS上,我们可以为您处理更多的状态转换,因此它比Android更易于使用。)您能否尝试删除后台/前台处理,看看问题是否消失。正如你所描述的,我试图复制它,但我的出版物在背景设置时仍然被禁用,即使我使用网络链接调节器模拟了一个糟糕的网络。我已经删除了我的背景应用程序处理。当在一台正在广播的设备上最小化应用程序时,我预计在另一台较早拾取该消息的设备上会发生消息丢失。我在5分钟后才收到丢失的消息,就像我在后台处理一样。信息丢失不应该立即发生吗