设备未收到C#Windows推送通知,因为通道URL不兼容

时间:2013-12-24 00:40:18

标签: c# push-notification windows-store-apps windows-8.1

经过几个小时的试用,我仍然无法向我的应用发送推送通知。这就是我到目前为止所做的:

  • https://appdev.microsoft.com

  • 处激活服务
  • 获得SID,我们称之为ms-app://s-1-23-4-12345678901-...-12345678901

  • 收到客户端密码,我们称之为12Lwq7526OqNY8iN-aLkwds23451345

  • 在我的应用程序中,我在某些时候(简化)实现了以下内容:

    PushNotificationChannel channel = null;
    channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    System.Diagnostics.Debug.WriteLine(channel.Uri);
    
  • 这会打印出这种类型的网址:

    https://db3.notify.windows.com/?token=AgY7AABrfRCVgRV%2ba4DwoDjC2omrnOVwCkdhCrrzlJi6UpIwHzcig6%2fG5xZfnDqU0%2fXoE848ddiqyTaTlSSltp2Dn9Z3qaPsMAyh7kS%2bmlis1%2bwoh%2b%2b4DsAK1yeV1d9G1rUIuFs%3s
    
  • 我在Package.appxmanifest文件中添加了正确的包名,发布商名称和发布商ID

  • 所以我认为我已经准备好测试推送通知了。使用我自己的push sharp,fiddler输出实现如下:

    请求

    POST https://db3.notify.windows.com/?token=AgY7AABrfRCVgRV%2ba4DwoDjC2omrnOVwCkdhCrrzlJi6UpIwHzcig6%2fG5xZfnDqU0%2fXoE848ddiqyTaTlSSltp2Dn9Z3qaPsMAyh7kS%2bmlis1%2bwoh%2b%2b4DsAK1yeV1d9G1rUIuFs%3s HTTP/1.1
    X-WNS-Type: wns/toast
    Authorization: Bearer EgAC4AA1hAZAQMAklDAAEgAAAUe8/AGsK8a/yk78/WEDQf+KUld/nYIvJ51OIoCPgAfwqbl0oo1sPDLhd9ChiO/iLFVzwlTPE3trp9oTkJxNXi0yUrf+FKjRciq7Utek9B/4dxH9lFNy0R5iwdMS0xNS0yLTIyNDgyMDE1NzEtMjczODcxMjkyMy0yMzM3MbsS59ZuQmXCIAFoOiAAAAAAAgzMOTB7OuFIezrhS60gEAAoANS45LjYuMTBiPoPMh3Nj5MAEOp0RhrcMUx6D50AtDuzWE1AAAAAABeAG1zLWiwcDovL3MtTk2Nzk3LTEzOTYwNDkxODYtMjEyODYwMTQ3MS04MDg1MDg2ODUtMzY3NjQyNTk3OQA=
    Content-Type: text/xml
    Host: db3.notify.windows.com
    Content-Length: 138
    
    <toast>
      <visual>
        <binding template="ToastText01">
          <text id="1">This is a test</text>
        </binding>
      </visual>
    </toast>
    

    答案

    HTTP/1.1 403 Forbidden
    Content-Length: 0
    X-WNS-ERROR-DESCRIPTION: Channel URL incompatible with caller app
    X-WNS-MSG-ID: 5FC550364E079585
    X-WNS-DEBUG-TRACE: DB3WNS4011533
    Date: Mon, 23 Dec 2013 23:58:22 GMT
    
  • 我发现此帖Channel URL incompatible with caller app到目前为止并没有真正帮助

我使用http://31daysofwindows8.com/push的网络服务收到同样的错误。我能在这做什么?什么可能出错?请注意,此应用程序尚未发布到商店,我正在测试我的本地Windows 8.1安装。

4 个答案:

答案 0 :(得分:21)

哇,这真是难以置信。我差点疯了,但这是解决方案(和解释):

在Windows应用程序仪表板中,它表示您可以手动或自动设置应用程序标识。我选择手动完成(我的意思是,为什么不呢?)。但这是一个错误。我引用microsoft.com仪表板:


手动设置应用的身份值

在文本编辑器中打开应用程序的AppManifest.xml文件,并使用此处显示的值设置元素的这些属性。

<Identity Name=" MyName.MyApp " Publisher="CN=*******-****-****-****-************" />

此方法不允许我收到推送通知!

获取推送通知(对我而言)的唯一方法如下:尝试通过调用此菜单由Visual Studio自动设置应用程序标识:

PROJECT -> STORE -> ASSOCIATE APP WITH THE STORE...

这解决了我的问题。

答案 1 :(得分:2)

我无法使用&#34; Associate App&#34;因为顾客不愿意给我们他们的凭证而接近。

对我有用的是从应用的.csproj文件中删除以下两个元素:

<PackageCertificateKeyFile>...</PackageCertificateKeyFile>
<PackageCertificateThumbprint>...</PackageCertificateThumbprint>

通过将文件拖入文本编辑器或卸载项目(使用右键单击)并使用xml编辑器进行编辑(再次在上下文菜单中)来执行此操作。

当我们将我们的应用与我们的测试应用相关联时,这些元素可能会陷入困境,当我们删除关联并按照andreas所描述的那样设置身份时,这些元素就会停留在那里。

<Identity Name="..." Publisher="CN=..." />

编辑:刚刚发现这样做可能会破坏构建软件包的msbuild脚本。但是,在Visual Studio中构建应用程序包一次创建了这些元素的新版本,然后为我工作。

答案 2 :(得分:1)

MS文件对我来说是一场噩梦,最后我发现需要做的是:

右键单击您的Windows应用商店应用解决方案 - &gt; “商店” - &gt; “将应用程序与商店关联......” - &gt;选择您的应用名称并按照步骤操作,直到消息“成功” - &gt;重建并运行

尽管严格按照文档手动编辑清单,但显然它还不够完整。

答案 3 :(得分:1)

使用Cordova for Windows,我发现,即使在“将应用程序与商店关联......”之后,推送消息也无法提供。

问题是,App仍然分配了默认的CordovaApp_TemporaryKey.pfx。

将新的CordovaApp.Windows_StoreKey.pfx复制到CordovaApp_TemporaryKey.pfx后,邮件传递成功。