Azure移动服务/VS Cordova工具 - 404

10

我想使用Azure移动服务和Apache Cordova的Visual Studio工具开始工作。(https://msdn.microsoft.com/en-gb/magazine/dn879353.aspx)

我想用移动服务实现推送通知。我已经创建了一个带有Node后端和TodoItem表的服务,并设置了GCM。

但是,当我尝试注册模板时,出现了404未找到错误:

 var GCM_SENDER_ID = 'MY_GCM_ID';
 mobileServiceClient = new WindowsAzure.MobileServiceClient(
      "MY_URL",
      "MY_API_KEY"
 );

 pushNotification = PushNotification.init({
    "android": { "senderID": GCM_SENDER_ID }
 });

 pushNotification.on('registration', function (data) {
      var handle = data.registrationId;   //This appears to be set alright
      var platform = device.platform;   // This is 'Android'
      if (platform == 'android' || platform == 'Android') {
        var template = '{ "data" : {"message":"$(message)"}}';
        mobileServiceClient.push.gcm.registerTemplate(handle, 'myTemplate', template, null);
});

最后一行提示我收到了一个404错误。我正在Google Android模拟器中运行应用。

编辑:我试着使用Postman调用registrations端点:https://myservice.azure-mobile.net/push/registrations?platform=gcm&deviceId=

如果我使用GET方法,响应是[],如果我使用POST方法,会收到404错误。


你能否记录一下你安装的JS文件/插件的版本?还有你的Node.js服务器的版本是什么?当你访问任何端点(如tables/todoitem)时,会有一个头部x-zumo-version:Zumo.master.0.1.6.4401.Runtime。 - phillipv
谢谢。我该如何查看头文件?我花了一两天的时间尝试让模拟器与 Fiddler 协同工作,但似乎没有任何进展? - user888734
你可以使用Chrome的Postman应用程序,比使用Fiddler更容易,而且无需涉及任何模拟器等。 - phillipv
要获得一个PNS令牌(在这里是GCM),您需要一个设备/模拟器。 如果您已经拥有一个有效的令牌,您可以任意方式从那里进行注册调用(只需硬编码即可)。 在这种情况下,使用Postman只是为了获得一个头部,并且可以在您拥有的任何API上运行,而不仅仅是推送API。 - phillipv
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/97653/discussion-between-user888734-and-phillipv。 - user888734
显示剩余3条评论
1个回答

2

终于解决了! 我没有安装 Cordova Whitelist Plugin 插件!

我在调试 MobileServices.Web.js 时发现,与在 Postman 中成功的完全相同的请求在 Android 模拟器中失败了,这让我意识到问题所在。


虽然您已经找到了根本原因,但是您的代码仍然存在格式错误,函数 pushNotification.on 没有用闭合符号 } 关闭。最后一个括号只关闭了 if 条件语句。 - Pranav Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接