tvOS applicationDidBecomeActive 在电视关闭的情况下反复调用
tvOS applicationDidBecomeActive called repeatedly with TV off
在带有 RevenueCat 的 tvOS 13.4 上,当我在 4K 电视设备上安装我的应用程序 运行,然后关闭电视(离开应用程序 运行)时,我得到这个:
2020-05-10 12:21:59-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:01-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:01-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
2020-05-10 12:22:05-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:07-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:07-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
2020-05-10 12:22:11.0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:13-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:13-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
2020-05-10 12:22:14-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:19-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:19-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
为什么会这样?显然它知道电视已经关闭,因为当我重新打开它时,它就停止重复调用。
堆栈跟踪中在此之前的唯一调用是私有函数:
#1 0x00000001e36c8398 in -[UIApplication _stopDeactivatingForReason:] ()
我在 RevenueCat 工作,让我补充一些背景信息:
这是由 purchases-ios
中的错误引起的,存在于版本 3.1.0
-> 3.2.2
中,即使方法无操作,日志也会发出,如果没有' 任何需要同步的订阅者属性(这将是您的情况,除非它们经常被设置为不同的值)。
它将在本周发布的下一个版本 3.2.3
中得到修复(以及其他修复)。
发生的事情是 RevenueCat 会在应用程序处于前台或后台时尝试同步订户属性 (https://docs.revenuecat.com/docs/subscriber-attributes)。当 UIApplicationDidBecomeActiveNotification
或 UIApplicationWillResignActiveNotification
被解雇时,应用程序在 tvOS 上被视为 foregrounded/backgrounded。如果没有需要同步的属性,该方法会提前退出,但当前版本仍然会发出日志,说明它们已同步成功。
我不太清楚为什么 tvOS 在电视关闭时触发这两个通知,但我会深入挖掘并让您知道。
不过,再次澄清一下,除非在前景或背景之间设置了新的订阅者属性,或者除非它们被设置为与当前属性不同的值,否则该方法不会执行任何操作。
在带有 RevenueCat 的 tvOS 13.4 上,当我在 4K 电视设备上安装我的应用程序 运行,然后关闭电视(离开应用程序 运行)时,我得到这个:
2020-05-10 12:21:59-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:01-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:01-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
2020-05-10 12:22:05-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:07-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:07-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
2020-05-10 12:22:11.0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:13-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:13-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
2020-05-10 12:22:14-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:19-0700 MyApp[709:1904667] [Purchases] - INFO: Subscriber attributes synced successfully
2020-05-10 12:22:19-0700 MyApp[709:1904667] [Purchases] - DEBUG: applicationDidBecomeActive
为什么会这样?显然它知道电视已经关闭,因为当我重新打开它时,它就停止重复调用。
堆栈跟踪中在此之前的唯一调用是私有函数:
#1 0x00000001e36c8398 in -[UIApplication _stopDeactivatingForReason:] ()
我在 RevenueCat 工作,让我补充一些背景信息:
这是由 purchases-ios
中的错误引起的,存在于版本 3.1.0
-> 3.2.2
中,即使方法无操作,日志也会发出,如果没有' 任何需要同步的订阅者属性(这将是您的情况,除非它们经常被设置为不同的值)。
它将在本周发布的下一个版本 3.2.3
中得到修复(以及其他修复)。
发生的事情是 RevenueCat 会在应用程序处于前台或后台时尝试同步订户属性 (https://docs.revenuecat.com/docs/subscriber-attributes)。当 UIApplicationDidBecomeActiveNotification
或 UIApplicationWillResignActiveNotification
被解雇时,应用程序在 tvOS 上被视为 foregrounded/backgrounded。如果没有需要同步的属性,该方法会提前退出,但当前版本仍然会发出日志,说明它们已同步成功。
我不太清楚为什么 tvOS 在电视关闭时触发这两个通知,但我会深入挖掘并让您知道。
不过,再次澄清一下,除非在前景或背景之间设置了新的订阅者属性,或者除非它们被设置为与当前属性不同的值,否则该方法不会执行任何操作。