Azure 移动服务推送不起作用

Posted

技术标签:

【中文标题】Azure 移动服务推送不起作用【英文标题】:Azure Mobile Services Push not working 【发布时间】:2014-10-20 11:58:39 【问题描述】:

我正在尝试实现对我的应用的推送。

我已遵循本指南: http://azure.microsoft.com/en-us/documentation/articles/mobile-services-javascript-backend-ios-get-started-push/

但是,我使用的是 API 而不是数据脚本,所以在我的一种 API 方法中,我这样做了:

   var push = request.service.push;


   push.apns.send(null, 
    alert: "Alert",
    payload: 
        inAppMessage: "Hey, a new item arrived"
    
   , 
    success: function(resp) 
        console.log(resp)
    ,
    error: function(err) 
        console.error(err)
    
   );

我的日志显示了这一点(所以我进入了成功方法 [另外我知道,由于苹果推送服务器没有响应错误,我永远不应该在 iOS 上出现错误]):

 isSuccessful: true,
  statusCode: 201,
  body: '',
  headers: 
    'transfer-encoding': 'chunked',
     'content-type': 'application/xml; charset=utf-8',
     server: 'Microsoft-HTTPAPI/2.0',
     date: 'Mon, 20 Oct 2014 11:31:21 GMT' ,
  md5: undefined 

我的应用程序是这样正确注册的,我看到回调消息并且没有错误:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *)deviceToken

    [client.push registerNativeWithDeviceToken:deviceToken tags:@[@"uniqueTag"] completion:^(NSError *error)
    
        NSLog(@"registerNativeWithDeviceToken callback");
        if (error != nil)
        
            NSLog(@"Error registering for notifications: %@", error);
        
    ];

但我的 iPhone 上没有推送消息!什么都没有发生。

我正在尝试检查通知中心中的错误,但我在那里看不到日志。

我错过了什么?无论如何,我真的不明白我的实际设备 ID 存储在服务器端的位置。我一定是错过了什么。

谢谢!

【问题讨论】:

【参考方案1】:

调试正在发生的事情的最佳方法是按照此处的通知中心调试步骤进行操作:http://msdn.microsoft.com/en-us/library/azure/dn530751.aspx

我将首先使用服务总线资源管理器仔细检查注册是否具有您期望的设备令牌和标签。验证后,请测试直接通过通知中心门户发送警报。如果仍有问题,请发送电子邮件至 toddreif@microsoft.com。

【讨论】:

太棒了!当然,这是一个凭证问题。它现在正在工作。但是,我的“子问题”仍然存在:设备 ID 存储在哪里?例如,如何将 id 绑定到数据库中的用户? 以下博客解释标签:blogs.msdn.com/b/africaapps/archive/2013/10/22/… 我们建议使用标签进行用户识别和组识别。您可以在客户端或服务中添加标签。 @Spoek 抱歉,我错过了您的回复!如果您使用的是节点移动服务,则可以通过门户添加注册脚本。如果您使用的是 .Net 移动服务,则可以使用以下说明添加 INotificationHandler:blogs.msdn.com/b/azuremobile/archive/2014/04/08/…。在不知道您的应用程序模式的情况下,我不能说将这些数据连接到您的后端数据的最佳位置,但我建议使用 ZUMO InstallationID 或用户令牌的 UserID 作为链接的关键标签,而不是 deviceId。 此链接更详细地介绍了向特定用户 ID 发送通知:azure.microsoft.com/en-us/documentation/articles/…【参考方案2】:

如@Todd Reifsteck 所说,在Azure 中使用您的调试菜单,并在调试时测试"myTag"myTag 的标记名称。

【讨论】:

以上是关于Azure 移动服务推送不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin + MvvmCross + Azure 移动应用表请求不起作用

来自通知中心的推送通知不起作用,但在 FCM 中它正在工作

服务总线输出绑定在 Azure 中不起作用

服务器更改时推送通知不起作用

2195端口是强制要求开放的吗? IOS 推送通知在 php 中不起作用,而 Ios 推送通知在 laravel 中没有进入移动设备

我的应用推送通知仅在我客户的 iPhone 上不起作用