c# - 为什么 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;
}));
解决方案
我相信你已经从这个问题上移开了,但我也面临着同样的事情。
经过一番挖掘,我发现显然在您的应用程序启动时间与 OneSignal SDK 执行 IdsAvailable Callback 的时间之间可能存在相当大的延迟(毕竟这是一个回调,因此无法保证您仍然会在其中运行时的例行程序)
在我的设备上,对于 android,它几乎是即时的,对于 iOS,从我的应用程序启动到 ID 可用的时间大约需要 2 秒,所以我只需要调整播放器 ID 可能不可用的事实我的第一个视图加载。
推荐阅读
- ios - folly::detail::function::FunctionTraits 中的 NSInternalInconsistencyException
- c# - 从 MainWindow.xaml.vb 设置用户控件的变量值
- c - 输出后换行
- javascript - 使用香草 javascript 无限滚动
- node.js - Node.JS 服务器崩溃
- docker-compose - 无法在 Visual Studio 2019 中使用 Azure Function 项目构建 docker compose
- python - Selenium/Python:更改元素属性
- r - 将 data.table 列中以逗号分隔的字符串中的数字转换为长表形式
- javascript - 这个语法是什么意思“ function(a,d){...}(Jquery,...); ”
- ios - 画外音 - 恢复听写