为iOS设置GCM

为iOS设置GCM,ios,google-cloud-messaging,Ios,Google Cloud Messaging,我用Phonegap Build创建了一个移动应用程序,可以在Android和iOS上运行。我使用ASP.NET通过调用Google Cloud Messaging设置通知。不过,我的问题与这些技术无关。我试着阅读所有的GCM文档,但它似乎不是为新手编写的,我也没有使用CocoaPods或他们提到的其他客户端技术 我已经设置了GCM,可以毫无问题地向我的应用程序的Android版本发送通知;当我直接在Android平板电脑上安装development.apk文件时,它就可以工作,而当我运行从Go

我用Phonegap Build创建了一个移动应用程序,可以在Android和iOS上运行。我使用ASP.NET通过调用Google Cloud Messaging设置通知。不过,我的问题与这些技术无关。我试着阅读所有的GCM文档,但它似乎不是为新手编写的,我也没有使用CocoaPods或他们提到的其他客户端技术

我已经设置了GCM,可以毫无问题地向我的应用程序的Android版本发送通知;当我直接在Android平板电脑上安装development.apk文件时,它就可以工作,而当我运行从Google Play安装的产品版本时,同样的HTTP/JSON调用也可以工作

和往常一样,iOS是一个完全不同的痛苦世界。我相信我已经使用苹果网站正确创建了APNS证书。我已将生成的.p12文件上载到谷歌。我可以看到我的应用程序发送到我的网站的令牌,就像我可以使用Android设备一样。我将此令牌插入到与谷歌对话的服务器端代码中,但我得到:

HTTP返回码是200 {“多播id”:6487xxxxxx91167,“成功”:0,“失败”:1,“规范id”:0,“结果”:[{“错误”:“无效注册”}]}

GCM文档仅仅表明我把令牌弄错了。我不知道如何从我的应用程序(当它第一次加载时)获得一个值传递到我的服务器,而且一切似乎都很好

认为1.令牌可能被截断?Android代币的长度都是162个字符,但从我的iPad发送的代币长度是64个字符

想2.我想知道我是否使用了正确的URL;是
https://gcm-http.googleapis.com/gcm/send
就像Android设备一样?开发/生产是否需要不同的价值

思考3。谷歌如何知道是否使用我的APNS证书的生产版开发?毕竟,我上传了两个.p12文件,但我的ASP.NET代码只传递了我的40字符GCM API密钥和设备令牌


想了想4.也许我把苹果的认证过程搞砸了。这会导致
InvalidRegistration
错误吗?

您使用的是谷歌的CloudMessaging SDK吗?不,我不会使用它,除非Phonegap插件这样做。我承认,到目前为止,我还没有在任何地方看到“SDK”这个短语。是发送从应用程序本身注册时收到的实际APNS令牌,还是将该令牌与GCM API交换为GCM令牌?我自己的客户端代码从插件(专为GCM构建)获取令牌值,并将其发送到我的服务器。我在对GCM进行HTTP调用时使用它。我还没有听说过用iOS代币交换GCM代币!我猜这就是你的实现失败的地方。在本机iOS实现中,GCM SDK用于将iOS通知令牌交换为GCM可以使用的令牌。然后将其推送到我们的服务器,该服务器在对GCM的任何“发送”调用中使用相同的命令。请看这里: