首页 > 解决方案 > 为什么 Xamarin 上的 oneSignal 的玩家 ID 为空?仅在 iOS 中

问题描述

我在从 Xamarin 获取玩家 ID 时遇到了一点问题。我正在 Xamarin Forms 中制作一个应用程序,它适用于 Android,但是当我尝试在 iOS 上获取它时,字符串为空。

然后,当我想获取“playerId”(我的变量)的值时,它是空的。这仅在 iOS 中发生——当我在 Android 上执行此操作时,它运行良好。显然,在我使用 OneSignal 密钥注册应用程序之前,我的设备(iPhone)已在 OneSignal 页面上注册。我需要将 playerId 保存在我的数据库中。

这是我的代码:

string playerId="";

    OneSignal.Current.IdsAvailable(new Com.OneSignal.Abstractions.IdsAvailableCallback((playerID, pushToken) =>
                                {
                                    playerId = playerID;
                                }));

标签: c#xamarinxamarin.formsxamarin.iosonesignal

解决方案


我相信你已经从这个问题上移开了,但我也面临着同样的事情。

经过一番挖掘,我发现显然在您的应用程序启动时间与 OneSignal SDK 执行 IdsAvailable Callback 的时间之间可能存在相当大的延迟(毕竟这是一个回调,因此无法保证您仍然会在其中运行时的例行程序)

在我的设备上,对于 android,它几乎是即时的,对于 iOS,从我的应用程序启动到 ID 可用的时间大约需要 2 秒,所以我只需要调整播放器 ID 可能不可用的事实我的第一个视图加载。


推荐阅读