Firebase Cloud 消息传递和 Azure Notification Hubs 设备注册相互实现
Posted
技术标签:
【中文标题】Firebase Cloud 消息传递和 Azure Notification Hubs 设备注册相互实现【英文标题】:Firebase Cloud messaging and Azure Notification Hubs device registration mutual implementation 【发布时间】:2017-05-18 16:49:04 【问题描述】:我正在开发一个需要实施通知的 xamarin 应用程序。我们决定使用 azure 来管理它们,但实际发送通知的是 firebase,因此需要在 NotificationHub 和 Firebase 服务中注册设备。
我已经成功直接在手机上执行此操作,使用 WindowsAzure.Messaging 组件和 Xamarin - firebase 消息传递 nuget。
但我在某处读到建议从应用后端执行此操作,因此我现在正尝试这样实现。
所以我的新“后端”(实际上是一个 wcf 服务)是基于这个 guide(我的 ws 的简化版本):
public async Task<string> RegistrerCampusHubs(Device device)
RegistrationDescription registration = null;
string newRegistrationId = device.Id;
try
if (device.Regitration.Handle != null)
var registrations = await hub.GetRegistrationsByChannelAsync(device.Regitration.Handle, 100);
foreach (RegistrationDescription reg in registrations)
if (newRegistrationId == null)
newRegistrationId = reg.RegistrationId;
else
await hub.DeleteRegistrationAsync(reg);
if (newRegistrationId == null)
newRegistrationId = await hub.CreateRegistrationIdAsync();
switch (device.Regitration.Platform)
case "mpns":
registration = new MpnsRegistrationDescription(device.Regitration.Handle);
break;
case "wns":
registration = new WindowsRegistrationDescription(device.Regitration.Handle);
break;
case "apns":
registration = new AppleRegistrationDescription(device.Regitration.Handle);
break;
case "gcm":
registration = new GcmRegistrationDescription(device.Regitration.Handle);
break;
registration.RegistrationId = newRegistrationId;
registration.Tags = new HashSet<string>(device.Regitration.Tags);
await hub.CreateOrUpdateRegistrationAsync(registration);
return "Success";
catch (Exception e)
return "Failed: " + e.Message;
这似乎可行,因为我可以在通知中心看到已注册的设备,但是当我尝试发送消息时,我从 Visual Studio 中的通知中心测试发件人收到以下错误:
注册的推送通知系统句柄不再有效
我做了一些测试,得出的结论是设备没有在 firebase 中注册。
await hub.CreateOrUpdateRegistrationAsync(registration);
这行代码在 NotificationHub 中注册设备,但不在 firebase 中。有关如何解决此问题的任何想法?
【问题讨论】:
【参考方案1】:根据您的描述,我按照tutorial 中的代码示例使用NotificationHub.Register
和Enable Firebase Cloud Messaging 来检查此问题。我可以通过 Visual Studio Server Explorer 使用 Test Send 和 Azure Portal 中的 Test Send 接收通知。
注册的推送通知系统句柄不再有效
根据您的情况,我假设您在 Azure Notification Hub 上的注册可能无效(例如已过期)。我们建议您在应用启动时需要重新注册。此外,您可以参考此tutorial 以了解有关 Azure 通知中心的故障排除。对于 Service Bus Explorer,您可以参考here。
【讨论】:
是的,我之前设法让它工作了,但 Gcm 不是已弃用吗? 您可以使用 Azure 移动应用后端检查 push notifications to Xamarin.android app。 设备注册对我不起作用。尝试设备安装表单后端。在这里我发布了我的解决方案,经过 3 周后发现,我的代码很好,只是我测试错了。您无法向自己发送通知。希望有所帮助。 ***.com/questions/46778371/…以上是关于Firebase Cloud 消息传递和 Azure Notification Hubs 设备注册相互实现的主要内容,如果未能解决你的问题,请参考以下文章
在 Firebase Cloud Messaging 上通过 XMPP 传递上游消息的误解
在 Cloud Function for Firebase 中设置 Firebase 消息的优先级
Google Cloud Messaging与Firebase
如何在 webapp 中实现 firebase 云消息传递? [关闭]