WNS通知:频道网址与来电者应用不兼容

时间:2016-01-22 11:31:24

标签: push-notification windows-phone-8.1 windows-store-apps wns

我目前正在为Windows Phone 8.1开发基于Cordova(版本4.0.0)的移动应用程序。

我从API Java-WNS(来自fernandospr的github)实现了Java代码,以便向我的设备发送通知。

当我将通知消息推送到WNS时,我收到此错误:

Client in-bound response
403
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-WNS-DEBUG-TRACE: DB5SCH101111133
Date: Fri, 22 Jan 2016 10:44:55 GMT
Content-Length: 0
X-WNS-STATUS: dropped
X-WNS-ERROR-DESCRIPTION: Channel URL incompatible with caller app
X-WNS-MSG-ID: 6D850FC61AE7FDB5
X-WNS-NOTIFICATIONSTATUS: dropped

以下是配置我的应用以接收通知的不同步骤:

  • 我从windows developper dashboard注册了我的应用
  • 我有一个SID包:ms-app:// s-1-15-2- [...] - [...] - [...] - [...] - [.. ] - [...] - [...] - 2403721117
  • 我也有这样的客户秘密(只是一个例子):Nk2C + pmadqcHNQR51lN6F7LGaJYUTRPb
  • 这是我从WNS获得的渠道URI:

    https://db5.notify.windows.com/?token=AwYAAAD8sfbDrL9h7mN%2bmwlkSkQZCIfv4QKeu1hYRipj2zNvXaMi9ZAax%2f6CDfysyHp61STCO1pCFPt%2b9L4Jod72JhIcjDr8b2GxuUOBMTP%2b6%2bqxEfSB9iZfSATdZbdF7cJHSRA%3d
    
  • 最重要的是,我将自己的应用与Visual Studio的Windows商店相关联。然后,包名称,发布者显示和发布者ID已添加到我的appxmanifest.file

这里是appxmanifest.file(真正的名字"来自平台/ windows文件夹和cordova windows phone项目的package.phone.appxmanifest):

<?xml version='1.0' encoding='utf-8'?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest" xmlns:m3="http://schemas.microsoft.com/appx/2014/manifest" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest">
    <Identity Name="company-name.70**********2" Publisher="CN=02******-****-****-****-***********9" Version="1.1.0.0" />
    <mp:PhoneIdentity PhoneProductId="06******-****-****-****-**********k" PhonePublisherId="s*******-****-****-****-***********5" />
    <Properties>
        <DisplayName>Demo Windows App Phone</DisplayName>
        <PublisherDisplayName>My Company Name</PublisherDisplayName>
        <Logo>images\StoreLogo.png</Logo>
    </Properties>
    <Prerequisites>
        <OSMinVersion>6.3.1</OSMinVersion>
        <OSMaxVersionTested>6.3.1</OSMaxVersionTested>
    </Prerequisites>
    <Resources>
        <Resource Language="x-generate" />
    </Resources>
    <Applications>
        <Application Id="com.company-name.demo" StartPage="www/index.html">
            <m3:VisualElements BackgroundColor="transparent" Description="CordovaApp" DisplayName="Demo Windows App Phone" ForegroundText="light" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png">
                <m3:DefaultTile Square71x71Logo="images\Square71x71Logo.png" Wide310x150Logo="images\Wide310x150Logo.png">
                    <m3:ShowNameOnTiles>
                        <m3:ShowOn Tile="square150x150Logo" />
                        <m3:ShowOn Tile="wide310x150Logo" />
                    </m3:ShowNameOnTiles>
                </m3:DefaultTile>
                <m3:SplashScreen Image="images\SplashScreenPhone.png" />
            </m3:VisualElements>
            <ApplicationContentUriRules>
                <Rule Match="https://dev.company-name.fr/demo-windows-app/*" Type="include" />
            </ApplicationContentUriRules>
        </Application>
    </Applications>
    <Capabilities>
        <Capability Name="internetClientServer" />
        <DeviceCapability Name="webcam" />
        <DeviceCapability Name="microphone" />
    </Capabilities>
</Package>

从服务器端,我使用两个参数对WNS进行身份验证:

  • SID包
  • 客户密码

我检查了有关此错误的不同主题,大部分有用的答案是将应用程序与Windows应用商店相关联。但我总是这样做而且我不能为我工作。

如果我理解的话,WNS平台只需要知道ID App(SID包)就可以找到我的应用并向我的应用发送通知。我不需要通过Windows商店部署我的应用程序。

您对如何解决这个问题有所了解吗?你觉得我忘记了什么或做错了吗?

编辑:

我以为我发现了问题!我正在研究它,当我解决问题时,我会回到这里发布我的解决方案。

4 个答案:

答案 0 :(得分:6)

我找到了解决我问题的方法。我很愚蠢,因为我没有看到我的应用程序与Windows商店的关联与必须生成的appx存档之间的关系。我部署了错误的appx,这就是我从未收到通知窗口的原因。事实上,错误的appx从未与Windows商店相关联......

所以,这是部署链接到Windows应用商店的appx存档的步骤(来自Visual Studio 2015 RC):

  • 转到项目标签并选择Windows商店
  • 点击创建应用套件
  • 按照不同步骤生成appx存档,其中包含相关的Windows商店信息(其中一个步骤将使您的应用与Windows商店相关联)
  • 生成的appx存档存储到以下文件夹(在我的例子中):C:\ Users \ pcharpin \ Documents \ Visual Studio 2015 \ Projects \ demo-app-windows \ demo-app-windows \ AppPackages \ CordovaApp。 Phone_1.1.0.0_arm_Test
  • 要在远程设备上部署此存档,请使用 Windows Phone应用程序部署8.1 工具。选择目标作为远程设备,并选择 CordovaApp.Phone_1.1.0.0_arm_Test 的应用程序包。要完成,请单击部署,您的应用将部署在远程设备上。
  • 您已准备好发送通知窗口并将其接收到您的Windows手机设备

因此,不要忘记创建一个应用程序包,将其与Windows商店关联,并可以接收通知窗口。

您可以从创建Windows 8.1应用包的文档中检索有关此内容的指南(除了部署步骤之外)。

答案 1 :(得分:4)

如果在关联应用程序后通知仍然无效,请仔细检查以下配置。

  1. 转到您帐户的Windows开发人员中心 - &gt;仪表板
  2. 选择您的应用 - &gt;服务 - &gt;推送通知
  3. 点击&#34;直播服务网站&#34;链路
  4. 以下&#34;包SID&#34;有#34;应用程序标识的配置&#34;等,

    &LT;身份名称=&#34; 09FSERVSD.YourAppName &#34;出版商=&#34; CN = XXXXXX&#34; /&GT;

  5. 在文本编辑器中打开应用程序appxmanifest,并确保在Identify标记中添加相同的名称。

  6. 理想情况下,通过VS工具关联应用程序应使用&#34; Name&#34;更新此条目。和&#34;出版商&#34;。但就我而言,它只更新了#34; Publisher&#34;我必须手动设置此值才能使其正常工作。通过这种方式,WNS将知道目标应用程序与关联的应用程序相同,并且通知应该通过。

    希望这对那些正在努力解决错误的人有帮助#34;频道网址与来电应用不兼容&#34;在测试WNS时。

答案 2 :(得分:2)

感谢你们所有人,

就我而言,resulation.Text = mediaelement.NaturalVideoWidth.ToString()+"x" +mediaelement.NaturalVideoHeight.ToString() +" px" ; 字段(Publisherpackage.windows10.appxmanifestpackage.windows.appxmanifest)默认为package.phone.appxmanifest

CN=$username$

一旦设定,一切顺利:

<Identity Name="com.CordovaApp" Publisher="CN=$username$" Version="2.2.11.0" />

答案 3 :(得分:0)

如果在正确设置后继续收到错误消息“X-WNS-ERROR-DESCRIPTION:通道URL与调用者应用程序不兼容”,请尝试从项目目录中删除* _TemporaryKey.pfx文件。