我正在设置一项服务,使用Azure通知中心向我们的应用发送推送通知。注册Android设备工作正常(在VS 2015 Azure工具中正确显示)但是当我尝试通过Azure门户或VS 2015测试发送工具发送测试帖时,我收到错误"推送通知系统句柄注册无效"并删除注册。我知道当通知中心收到错误时会删除注册,以便该部分有意义。我无法找到有关PNS无效的原因的任何信息。我的注册码是:
public class PushRegObject
{
public string Platform { get; set; }
public string Handle { get; set; }
public string[] Tags { get; set; }
}
public async static Task<ObjectResultObject<string>> RegisterDevice(PushRegObject reg)
{
string newRegistrationID = null;
var hub = NotificationHubClient.CreateClientFromConnectionString(_connectionstring_, _name_);
if (reg.Handle != null)
{
// Get the Registration ID
var registrations = await hub.GetRegistrationsByChannelAsync(reg.Handle, 100);
foreach(var registration in registrations)
{
if (newRegistrationID == null)
newRegistrationID = registration.RegistrationId;
else
await hub.DeleteRegistrationAsync(registration);
}
if (newRegistrationID == null)
newRegistrationID = await hub.CreateRegistrationIdAsync();
// Register the Device
RegistrationDescription regObj = null;
switch (reg.Platform)
{
case "android":
var regDesc = await hub.CreateGcmNativeRegistrationAsync(newRegistrationID);
return new ObjectResultObject<string>(true, null) { Object = regDesc.GcmRegistrationId };
case "ios":
regObj = new AppleRegistrationDescription(reg.Handle);
break;
default:
return new ObjectResultObject<string>(false, "Unknown device type");
}
}
return new ObjectResultObject<string>(true, null) { Object = newRegistrationID };
}
有什么想法吗?
更新 在Dmitry帮助缩小问题范围的过程中,我找到了在CreateGcmNativeRegistrationAsync调用中使用GCM完整令牌返回的解决方案。
var regDesc = await hub.CreateGcmNativeRegistrationAsync(reg.Handle);
答案 0 :(得分:1)
NotificationHubClient.GetAllRegistrationsAsync(100)
从通知中心获取所有注册,从您的测试Android设备中找到注册,并将此注册的GcmRegistrationId与设备从GCM收到的实际注册ID进行比较。