SBNotificationHub.RegisterNativeAsync无法返回

时间:2017-12-22 21:06:43

标签: c# xamarin.ios azure-notificationhub

调用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);
});

当然,解决方案会很棒,但是有关为什么注册失败的更多信息,在调试时给我一些信息,将会非常有用。

0 个答案:

没有答案