azure通知问题:apns在模板无响应时有效

时间:2018-04-11 06:46:02

标签: xamarin.forms apple-push-notifications azure-mobile-services azure-notificationhub

按照本教程"Add push notifications to your Xamarin.Forms app"进行Xamarin.Forms开发。在Azure后端和iOS中插入通知代码后,通知模板会发送但设备上没有警报。但是,APNS的测试发送显示设备上的警报。感谢任何建议。

这是我的RegisteredForRemoteNotifications

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
    {

        const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(message)\"}}";

        JObject templates = new JObject();
        templates["genericMessage"] = new JObject
        {
            {"body", templateBodyAPNS}
        };

        /*
        // Register for push with your mobile app
        Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
        try
        {
            push.RegisterAsync(deviceToken, templates);
        }
        catch (System.Exception ex)
        {
            Debug.WriteLine(@"Register error: {0}", ex.Message);
        }
        */


        Hub = new SBNotificationHub(Constants.ConnectionString, Constants.NotificationHubName);

        Hub.UnregisterAllAsync(deviceToken, (error) => {
            if (error != null)
            {
                Console.WriteLine("Error calling Unregister: {0}", error.ToString());
                return;
            }

            NSSet tags = new NSSet(); // create tags if you want
            var expire = DateTime.Now.AddDays(90).ToString(); // set expire
            try
            {
                //register native notification
                Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) =>
                {
                    if (errorCallback != null)
                        Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
                });

                //register template notification
                Hub.RegisterTemplateAsync(deviceToken, "add_newbook_notification", templateBodyAPNS, expire, tags, (errorCallback) => {
                    if (errorCallback != null)
                        Console.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
                });
            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(@"Register error: {0}", ex.Message);
            }
        });
    }

因为在一个客户端应用程序中可能有多个通知注册,理论上本机和模板通知注册都应该在此处成功。但是,我只接收APNS但没有模板。

1 个答案:

答案 0 :(得分:0)

Azure Messaging - RegisterTemplateAsync isn't working?此链接解决了我的问题。

  

注意

     

问题是这个ExpiryTemplate对我来说并不清楚。我确实在那个上找到了任何文档,但显然,它是一个DateTime格式   作为我们。

到期日期必须格式化为en-us 。 OtherWSie,RegisterTemplateAsync无法正常工作。