调用SBNotificationHub.RegisterNativeAsync
时,有时会成功,创建注册并收到通知。在其他时候,永远不会命中方法的回调,也不会创建注册。我添加了一个计时器,以便在发生这种情况时给出反馈。由于永远不会调用回调,我发现这很难调试。
UnregisterAllAsync
始终成功完成,然后输入回调。
此故障不会随机发生。具体来说,当在启动应用程序时调用此初始注册时,它会成功,在注销时更改标记时,它会成功,在登录时更改标记时会失败。所有这些都使用相同的代码,唯一的区别是标签。我怀疑标签可能是罪魁祸首,但是对于对此代码的所有调用,更改为一组常量标签并没有改变这种行为。如果没有响应,我尝试在5秒后重试注册(因此是计时器),但这只会导致每5秒发生相同的故障。
顺便说一句,等待RegisterNativeAsyncAsync
的行为类似。下一行永远不会被击中。
Hub.UnregisterAllAsync(DeviceToken, (error) =>
{
if (error != null)
{
Console.WriteLine("Error calling Unregister: {0}", error.ToString());
return;
}
bool callbackReached = false;
Hub.RegisterNativeAsync(DeviceToken, tags, (errorCallback) =>
{
callbackReached = true;
if (errorCallback != null)
Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
else
Console.WriteLine("RegisterNativeAsync succeeded.");
});
new Timer((Object obj) =>
{
if (!callbackReached)
{
Console.WriteLine("RegisterNativeAsync failed to return after 5 seconds.");
}
},
null,
5000,
0);
});
当然,解决方案会很棒,但是有关为什么注册失败的更多信息,在调试时给我一些信息,将会非常有用。