按照本教程"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但没有模板。
答案 0 :(得分:0)
Azure Messaging - RegisterTemplateAsync isn't working?此链接解决了我的问题。
注意:
问题是这个ExpiryTemplate对我来说并不清楚。我确实在那个上找到了任何文档,但显然,它是一个DateTime格式 作为我们。
到期日期必须格式化为en-us 。 OtherWSie,RegisterTemplateAsync无法正常工作。