asp.net – Xamarin.iOS推送通知标记.NET API / Azure通知中心
我们正在使用Xamarin.Forms开发跨平台(
Android和iOS)应用程序.到目前为止,我们设法让应用程序正常运行,所以很酷!
我们在我们的应用程序中包含了一些推送通知,使用Azure通知中心,GCM(适用于Android)和APNS(适用于iOS).它工作得很好! 实际上,我们只有最后一个问题:Android的一切正常,我们也可以使用iOS注册推送通知,但我们无法在注册中添加一些标签. 实际上,我们需要能够向一个用户或一组用户发送推送通知,而不是向所有人发送推送通知.为此,我们在web api的方法中这样做: if (user.DeviceType.Equals("Android")) { registration = new GcmRegistrationDescription(handles.Handle); } else { registration = new AppleRegistrationDescription(handles.Handle); } registration.Tags = new HashSet<string>(); registration.Tags.Add("usermail:" + user.Email); registration.Tags.Add("userid:" + user.Id); registration.Tags.Add("userdevice:" + user.DeviceType); registration.Tags.Add("usertype:" + tag); registration.RegistrationId = handles.RegistrationId; await NotificationHelper.Hub.CreateOrUpdateRegistrationAsync(registration); 对于给定的Handle,我们在Android中以这种方式检索它: protected override void OnRegistered(Context context,string registrationId) { [...] //the registration id is given in args } 这种方式在iOS中: public override void RegisteredForRemoteNotifications(UIApplication application,NSData deviceToken) { [...] var DeviceToken = deviceToken.Description; if (!string.IsNullOrWhiteSpace(DeviceToken)) { DeviceToken = DeviceToken.Trim('<').Trim('>'); } UserInformations.Handles.RegistrationId = DeviceToken.Replace(" ","").ToUpper(); [...] } 在Android中一切正常(我能够添加标签)但是我的iOS出错了.这条线
正在生成异常,告诉我我的registrationId“不再有效”.您可以注意到我在iOS的registrationId中删除了间距,因为如果我没有,我会收到另一个错误,告诉我我的registrationID包含非十六进制字符. 我不知道该怎么做才能解决这个问题,我在iOS中检索错误的registrationId,还是为APNS添加标签不同的方法? 谢谢你的帮助 ! 编辑:我注意到设备令牌必须是大写的.但令人惊讶的是,我得到了同样的错误.这里有2个截图,以帮助您了解: 所以你可以看到,在我的注册中,我在DeviceToken中获得的内容以及我在RegistrationId中获得的内容是相同的……我不知道该怎么做:/ 解决方法
实际上有很多在线文档和帖子帖子告诉你调整你从iOS方法’RegisteredForRemoteNotifications’获得的设备令牌.但是,如果你查看官方文档,这不是正确的方法.
以下是我们的“RegisteredForRemoteNotifications”方法的片段,因为您可以看到我们对设备令牌没有任何操作,请试一试,如果这样可以解决您的问题,请告诉我. if (oldDeviceToken != null) { if (oldDeviceToken.ToString() != deviceToken.ToString()) { try { Hub.UnregisterAllAsync(oldDeviceToken,(error) => { //check for errors in unregistration process. if (error != null) { TestingLogs.ApplicationLog.AppendFile(DateTime.Now.ToString() + " : " + "[PNS EXCEPTION] - Exception has been hit! - Message: " + error + " | Source: " + "Unregistering old device token against the notification hub."); //exit out of the code here because we can't keep our hub clean without being able to remove the device from our registration list. return; } else { ShouldComplete = true; } }); } catch (Exception genEx) { TestingLogs.ApplicationLog.AppendFile(DateTime.Now.ToString() + " : " + "[PNS EXCEPTION] - Exception has been hit! - Message: " + genEx.Message + " | Source: " + genEx + Environment.NewLine + Environment.NewLine); } } } else { // Store current device token bool res = await ApplicationSettings.StoreDeviceToken(deviceToken); } // Check if we need to perform our initial registrations if (ShouldComplete) { NSSet RegisteredTags = await ApplicationSettings.RetrieveUserTags(); if (RegisteredTags == null) { RegisteredTags = new NSSet("AppleDevice"); } //Register the device against the notification hub keeping the details accurate at all times. Hub.RegisterNativeAsync(deviceToken,RegisteredTags,(errorCallback) => { if (errorCallback != null) { TestingLogs.ApplicationLog.AppendFile(DateTime.Now.ToString() + " : " + "[PNS EXCEPTION] - Exception has been hit! - Message: " + errorCallback + " | Source: " + "Registering device token against the notification hub."); } else { if (deviceToken != null) { NSUserDefaults.StandardUserDefaults.SetString("Completed","InitialTagRegistration"); NSUserDefaults.StandardUserDefaults.Synchronize(); } } }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- caching – MVC4 StyleBundle:你能在Debug模式下添加一个缓
- 如何从ASP.NET应用程序启动/停止Windows服务 – 安全问题
- asp.net – 在IIS中发布CSS文件
- asp.net-mvc-3 – 局部视图中的RenderSection
- ASP.NET FileUpload
- asp.net-mvc-4 – Asp.net数据库迁移,什么是Down方法?
- asp.net – “可能危险的Request.Form”在通用处理程序中的
- prolog – 如何理解ASP中的否定失败?
- 使用.Net的Fluent验证库验证单个属性
- asp.net-mvc – RequireHttps导致Amazon Elastic Load Bala
- asp.net – Grid.SelectedRow.Cells.Item(1).Tex
- asp.net-mvc – 在MVC中使用Rotativa pdf显示动态
- asp.net-mvc – 如何更改ASP.NET MVC URL中的控制
- asp.net – 正确设置需要粘性会话的负载均衡网络
- .net – 排除某些页面使用HTTPModule
- asp.net-mvc-3 – 允许没有找到Html属性[AllowHt
- asp.net – 错误HTTP 404.11通过查询字符串传递帐
- 使T4MVC与ASP.NET 5一起使用
- asp.net-mvc – ASP.NET MVC文件名下划线
- asp.net – 用于修复表中的电话号码问题的SQL查询