磁贴、Toast 和锁屏提醒通知疑难解答(Windows 运行时应用)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本主题介绍了遇到有关以下内容的问题时应采取的初始疑难解答步骤:磁贴、Toast 和锁屏提醒通知,其中包括各种通知方法:本地、推送、定期和计划通知。
磁贴通知疑难解答
本部分解决使用磁贴和磁贴模板时可能遇到的某些常见错误。除非特别声明,否则每个解决方案都适用于所有通知传送类型:本地、计划、定期或推送通知。
不显示本地磁贴通知
这种情况下最常见的问题是用于定义通知的 XML 在某些方面不正确。但也存在其他可能原因,这些步骤还指导你完成:
- 检查用户设置
- 在应用清单中提供加宽或加大徽标资源
- 检查图像大小
- 验证你的 URL
- 检查你的图像格式
- 检测 XML 的语法
- 检查通知的过期时间
- 确保启用通知队列
检查用户设置
可能的原因:用户或管理员已禁用通知。检查应用是否在应用栏中提供了“打开/关闭动态磁贴”选项,以及该选项是否未处于“关闭”状态。对于管理员,有多个可以禁用通知的组策略。请咨询你的管理员,以确保启用通知。
解决办法:通过应用栏启用通知或者让管理员通过组策略启用通知。
有关详细信息,请参阅 TileUpdater.setting。
在应用清单中提供加宽或加大徽标资源
可能的原因:应用清单未将默认磁贴资源图像指定为通知中指定的磁贴大小。例如,如果未提供默认的加宽磁贴图像,则磁贴将不会显示加宽格式的通知模板。在理想情况下,磁贴通知应在通知负载中针对所有可能的磁贴大小提供模板,原因是(除非磁贴有意仅使用中等大小图像)通知到达时发送者不可能知道将显示的大小。该设置完全取决于用户。
解决方法:在你的通知负载中,为你在清单中提供的每种类型的默认徽标图像提供更新版本。可以将你的磁贴大小调整为具有默认徽标图像的任何大小。
检查图像大小
可能的原因:通知中的每个图像必须小于 1024 x 1024 像素且大小小于 200 KB。如果通知中的任何图像超过了这些尺寸中的任何尺寸,则会丢弃该通知。
解决办法:缩小图像。
有关详细信息,请参阅磁贴和 Toast 图像大小。
验证你的 URL
可能的原因:URL 语法错误。
通知中的图像是通过资源引用或文字路径提供的。如果使用路径,则必须使用以下三个协议之一提供:
前缀 | 使用 | 注意 |
---|---|---|
http:// 和 https:// | 联机存储的图像 | 这些图像可能缓存在本地,因此图像服务器可能未收到图像的请求。可以在这些 URL 中附加查询字符串。确保 Web 服务器返回原始图像,而不是 404(如果选择忽略查询字符串)。查询字符串示例:?scale=100&contrast=blk&lang=en-US 请注意,若要从 Internet 上检索任何通知内容,则应用必须在其应用部件清单中声明“Internet (客户端)”功能。 |
ms-appx:/// | 应用包附带的图像 | 这些图像是应用安装的一部分。请注意,此引用要求在冒号后面有三个正斜杠。在这三个正斜杠后,统一资源标识符 (URI) 接受正斜杠 (/) 或反斜杠 (\) 来分隔路径中的文件夹,但是大多数编程语言要求在指定反斜杠 (\\) 时使用转义符。 |
ms-appdata:///local/ | 应用在本地保存的图像 | 此位置对应于 Windows.Storage.ApplicationData.current.localFolder 返回的文件夹。请注意,此引用要求在冒号后面有三个正斜杠。路径中的文件夹分隔符必须使用转义符 (\\)。 |
注意 “/”字符作为每种规范类型中的分隔符。我们建议你始终使用“/”而不是“\”,从而避免在不注意的情况下与转义字符冲突。
格式正确的示例:
URL |
---|
https://www.contoso.com/icon.jpg |
ms-appx:///images/icon.png |
ms-appdata:///local/myDrawing.jpg |
格式错误的示例:
URL | 注意 |
---|---|
https://www.contoso.com\fail.png | HTTP 路径必须使用 / 字符。请不要使用 \ 字符。 |
http:www.contoso.com | HTTP 路径要求在冒号后面有两个斜杠 (//)。 |
“ms-appdata:///local/c:\\images\\Drawing.jpg” | 应用不能引用其本地存储之外的图像。 |
“ms-appx://images/triangle.png” | 对“ms-appx:”使用三个斜杠而不是两个斜杠。 |
检查你的图像格式
可能的原因:图像的格式不受支持。
通知只能使用 .gif、.png 或 .jpg/.jpeg 格式的图像。图像的格式还必须与其扩展名匹配。只是将不受支持的文件类型重命名为受支持的扩展名不起作用。
图像格式错误的最常见原因是位图到 Windows.Storage.ApplicationData.current.localFolder 存储的序列化。务必调用首选的格式,否则图像将存储为 Windows 位图并且它的头将包含“BMP”(一种不受支持的类型)。
验证方法:首先,验证你是否可以成功发送仅文本通知以便将问题的范围缩小到该图像。验证图像格式的一个方法是,将图像加载到图像处理程序中并另存为 .jpg。如果你在通知中引用了这个新的 .jpg 文件并且没有再次发生此错误,则可能是图像格式错误。你还可以在 Microsoft Visual Studio 二元编辑器中打开该文件并检查它的头。
解决办法:更改或更正图像格式。
检查你的 XML 语法和内容
可能的原因:XML 语法或验证错误。
除了基本语法外,请确保你的 XML 完整且正确,在你构建了负载作为字符串但不使用 API 或 NotificationsExtensions 库时尤其如此。XML 内容中的某些常见故障点包括:
- 区分大小写。标记名称、属性名称以及属性值全都区分大小写。请确保你的 XML 具有正确的大小写。
- 必须为每个磁贴大小提供 binding 元素。你应该为所发送的每个通知中支持的每种磁贴大小(即在你的清单中提供的徽标图像)提供 binding 元素。
- 文本字符串不应包含保留的 XML 字符。例如,不能通过包含 <i> 和 </i> 标记来使磁贴字符串变为斜体。如果要显示文字字符“<i>”,则应对其进行正确转义。有关 XML 中转义符的详细信息,请参阅 XML 字符实体和 XAML。
- 为 lang 属性提供的值必须符合 ITEF BCP 47 规范。
- 本地创建的 XML 字符串(针对本地或计划通知)必须使用 UTF-16 编码。通过推送通知发送或从 URL 轮询时,字符串应使用 UTF-8 编码。
- 如果要在 src 属性非空的 XML 负载中包含 image 元素,则必须确保包含对有效图像的引用,否则通知会被丢弃。
你可以使用事件日志来在磁贴通知不显示时检查错误。在事件查看器的“应用程序和服务日志 > Microsoft > Windows > 应用 > Microsoft-Windows-TWinUI/操作”下查找有关你的磁贴通知的事件。
验证方法:使用 XML 语法检查程序(如 Visual Studio 编辑器)查找基本语法错误。查看相应的模板引用 (TileTemplateType) 以确保拥有正确数量的图像以及为合适的图像索引分配了合适的图像。
解决办法:更改 XML 或使用其他模板来匹配内容。同样,考虑使用 NotificationsExtensions 库来避免直接操作 XML。
确保你的通知未过期
可能的原因:过期时间值设置得太小。
如果通过 expirationTime 方法(对于本地通知)或者 X-WNS-TTL 标头字段(对于推送通知)在通知中设置过期时间,请注意这些值以毫秒为单位。例如,如果你希望磁贴通知刚好持续一个小时,则该值应该为 60 * 60 * 1000 = 3600000。
解决办法:使用较大的值。
如果你希望循环通知,则应确保启用通知队列
可能的原因:尚未启用磁贴通知队列。
默认情况下,磁贴一次仅显示一个更新并且新传入的通知会替换现有通知。如果要循环显示最后五个通知,则必须在应用的启动代码中调用 TileUpdater.enableNotificationQueue(true)。该操作在你的应用生存时间内只需执行一次。有关详细信息,请参阅如何将通知队列与本地通知结合使用。
解决办法:在初始化代码中调用 enableNotificationQueue(true)。此外,还要确保通知标记不重复。
计划通知疑难解答
未显示计划磁贴或 Toast
可能的原因:如果遇到未显示磁贴更新或 Toast 通知的问题,多半是因为通知的 XML 内容格式不正确。计划磁贴和 Toast 通知以及非计划通知都必须符合磁贴和 Toast XML 架构。
解决办法:首先通过本地通知来测试你的 XML,以便对计划通知的传递问题进行调试。有关详细信息,请参阅本主题中的不显示本地磁贴通知或不显示本地 Toast 通知部分。
应用调用 AddToSchedule 方法失败
可能的原因:计划通知已超过允许的最大数量。
解决办法:如果尝试计划的通知多于 4096 个,则 TileUpdater.addToSchedule 和 ToastNotifier.addToSchedule 都将失败。减少计划通知的数量。
可能的原因:计划通知的时间相对于当前系统时钟时间来说为过去的时间。
解决办法:确保计划通知的时间为将来的时间。检查系统时钟时间。
定期(轮询)通知疑难解答
定期通知不更新磁贴或锁屏提醒
你可能会遇到阻止定期通知显示的一个或多个问题:
- Web 服务未返回符合磁贴 XML 架构的有效 XML 文档。如果在实现定期通知时遇到问题,请首先检查你的磁贴 XML 格式是否正确。调试定期通知的问题时,我们建议你首先通过本地通知测试你的 XML。有关详细信息,请参阅本主题中的不显示本地磁贴通知部分以及快速入门:发送磁贴更新。
- 从轮询请求返回的文本未采用 UTF-8 格式。必须使用 UTF-8 编码。
- 当 Windows 使用的 HTTP GET 请求轮询为你的服务提供的 URL 时,你的服务未正确响应该请求。支持 HTTP 和 HTTPS 协议。
- 你的应用未在其应用清单文件 (package.appxmanifest) 中声明 Internet 功能。在 Visual Studio 清单编辑器中,将发现此选项在“功能”选项卡下为“Internet (客户端)”。如果未为应用声明此功能,则 Windows 将不轮询你的服务。
- 请确保由 X-WNS-Tag 和 X-WNS-Expires 头设置的值正确设置格式。X-WNS-Expires 使用以下格式之一:
- Sun, 06 Nov 1994 08:49:37 GMT
- Sunday, 06-Nov-94 08:49:37 GMT
- Sun Nov 6 08:49:37 1994
延迟定期更新
- 如有必要,Windows 可以将你的 URL 的轮询最多延迟 15 分钟,以优化能耗和性能。
- 联系你的 URL 时,你的服务不可用。如果服务不可用,则在下一个轮询间隔之前不会再次联系该服务。
推送通知疑难解答
本部分解决使用推送通知时可能会遇到的某些常见错误。
- 检查事件日志
- 推送通知收到一个“200 OK”的响应,但没有显示
- 推送通知返回一个代码,而非“200 OK”
- 尝试创建推送通知通道时的错误
检查事件日志
如果磁贴或 Toast 推送通知未按预期显示,请查看事件日志。
- 如果已收到通知,但未显示:启动事件查看器,然后检查 Applications and Services\Microsoft\Windows\Apps 下的 Microsoft-Windows-TWinUI/Operational 日志。
- 如果根本没有收到通知:启动事件查看器,然后检查 Applications and Services\Microsoft\Windows\PushNotifications-Platform 下的操作日志。
推送通知收到一个“200 OK”的响应,但没有显示
如果 Windows 推送通知服务 (WNS) 返回一个“200 OK”响应,那么客户端联机时,它会将该通知传递给客户端。如果你已验证客户端处于联机状态,但未显示该通知,请完成以下步骤:
原因:通知内容中存在 XML 错误。
解决办法:验证基本的 XML 语法并确保 XML 完整正确。XML 内容中的某些常见故障点包括:
- 区分大小写。标记名称、属性名称以及属性值全都区分大小写。请确保你的 XML 具有正确的大小写。
- 必须为每个支持的磁贴格式提供 binding 元素。你应该为所发送的每个通知中支持的每个磁贴大小提供 binding 元素。
- 文本字符串不应包含保留的 XML 字符。例如,不能通过包含 <i> 和 </i> 标记来使磁贴或 Toast 字符串变为斜体。如果要显示文字字符“<i>”,则应对其进行正确转义。有关 XML 中转义符的详细信息,请参阅 XML 字符实体和 XAML。
- 为 lang 属性提供的值必须符合 ITEF BCP 47 规范。
- 通过推送通知发送的 XML 字符串应使用 UTF-8 编码。
- 如果要在 src 属性非空的 XML 负载中包含 image 元素,则必须确保包含对有效图像的引用,否则通知会被丢弃。
有关详细信息,请参阅磁贴、Toast 和锁屏提醒架构文档。
原因:推送通知 API 参数的使用不当
解决办法:有关具体信息,请参阅 Windows.Networking.PushNotifications 命名空间中的 API 文档。
原因:标头类型与通知内容不匹配。如果 X-WNS-Type 标头未设置为响应负载中指定的通知模板的值—磁贴、锁屏提醒或 Toast—,则不会显示通知。这种不匹配的情况将导致客户端发生错误并且丢弃通知。
解决办法:请参阅推送通知服务请求和响应头以确保你的应用服务器对 X-WNS-Type 标头使用正确的值。
原因:在 X-WNS-TTL 标头中设置的生存时间 (TTL) 值太小。
解决办法:提供一个较大的 TTL 值,并注意该值以秒指定。
如果解决前面步骤中的问题之后仍然未看到通知显示,请参阅本主题的不显示本地磁贴通知部分中的本地通知疑难解答步骤以获取进一步建议。
推送通知返回一个代码,而非“200 OK”
如果 WNS 未返回“200 OK”,则不会将你的通知传递给客户端。如果返回代码在 400s 之内,则开发人员应该能够解决此问题。有关特定代码含义的信息,请参阅 Windows 推送通知服务 (WNS0 响应代码引用。有关显示如何捕获和处理这些错误的示例代码,请参阅快速入门:发送推送通知或下载推送通知和定期通知示例。
注意 有关没有专门在此处列出的错误,请参阅 COM Error Codes (WPN, MBN, P2P, Bluetooth)。
- 通知请求返回“400 Bad Request”
- 通知请求返回“401 Unauthorized”
- 通知请求返回“401 Unauthorized”,令牌过期
- 通知请求返回“403 Forbidden”
- 通知请求返回“404 Not Found”
- 通知请求返回“406 Not Acceptable”
- 通知请求返回“410 Gone”
通知请求返回“400 Bad Request”
原因:一个或多个 WNS 标头的使用不正确或者 HTTP 请求无效。
解决办法:请参阅推送通知服务请求和响应头以确保你的应用服务器使用所述的所有自定义标头。
通知请求返回“401 Unauthorized”
原因:当注册应用时,应用服务器必须使用提供给你的正确程序包安全标识符(程序包 SID)和密钥。如果你最近在 Windows 应用商店仪表板中更改了你的密钥,则还将需要更新你的应用服务器。有关详细信息,请参阅推送通知概述。
解决办法:访问 Windows 应用商店仪表板以验证你的程序包 SID 和机密。
通知请求返回“401 Unauthorized”,令牌过期
原因:访问令牌的生存时间有限。如果你使用过期的访问令牌发送通知,则你的应用服务器的凭据无效并且无法发送通知。
解决办法:使用程序包安全标识符(程序包 SID)和密钥通过 WNS 进行身份验证,进而从 WNS 请求新的访问令牌。有关详细信息,请参阅 Windows 推送通知服务 (WNS) 通知概述。
通知请求返回“403 Forbidden”
原因:当提供的访问令牌与将通知发送到相应的通道 URL 所需的凭据不匹配时,发生此错误。每个应用必须向 Windows 应用商店注册才能接收其应用服务器的凭据。对于每个应用,只能使用 Windows 应用商店提供的凭据向该应用发送通知,并且这些凭据只能用于此特定应用。
解决办法:使用开发人员帐户登录 Windows 应用商店仪表板。选择你的应用并单击“高级功能”->“管理云服务设置”。选择“标识应用”以阅读有关更新应用清单来匹配云服务凭据的说明。
通知请求返回“404 Not Found”
原因:此错误通常表示通道 URL 格式不正确。当你向 WNS 发送通知时,不得篡改或修改通道 URL。通道 URL 应该始终被视为不透明字符串—,无需检查或者知道其内容。
解决办法:验证你的代码未通过更改一个或多个字符,也未通过更改其编码的方式来修改通道 URL。
通知请求返回“406 Not Acceptable”
原因:WNS 具有保护性策略以防止恶意应用对其他用户和开发人员的服务造成负面影响。在过短的时间内发送过量的通知会导致 WNS 明显丢弃通知。
解决办法:检查通知频率,看能否减小或进行优化以产生更好的用户体验。
通知请求返回“410 Gone”
原因:通道 URL 已过期。在你的应用运行并请求新的通道 URL 之前,不能发送进一步通知。
解决办法:Windows 应用商店应用应该始终在启动时请求通道 URL。不保证分配的通道 URL 相同。如果 URL 已更改,则客户端应该更新其云服务器上的信息。有关详细信息,请参阅如何请求、创建和保存通知通道。
尝试创建推送通知通道时的错误
- 创建通知通道导致 ERROR_NO_NETWORK 错误
- 创建通知通道导致 WPN_E_CLOUD_INCAPABLE 错误
- 创建通知通道导致 WPN_E_INVALID_APP 错误
注意 有关没有专门在此处列出的错误,请参阅 COM Error Codes (WPN, MBN, P2P, Bluetooth)。
创建通知通道导致 ERROR_NO_NETWORK 错误
原因:WNS 需要 Internet 连接才能创建通知通道。
解决办法:检查 Internet 连接。
创建通知通道导致 WPN_E_CLOUD_INCAPABLE 错误
原因:应用未在其应用部件清单 (package.appxmanifest) 中声明 Internet 功能。
解决办法:确保你的应用清单声明了 Internet 功能。在 Visual Studio 清单编辑器中,将发现此选项在“功能”选项卡下为“Internet (客户端)”。有关详细信息,请参阅 Capabilities。
创建通知通道导致 WPN_E_INVALID_APP 错误
原因:应用必须使用有效的程序包名称。如果你尚未收到,则可以通过 Windows 应用商店门户的“高级功能”下获取。
解决办法:有关为 Windows 应用商店应用检索程序包安全标识符 (PKSID) 的详细信息,请参阅如何使用 Windows 推送通知服务 (WNS) 进行验证。
Toast 通知疑难解答
本部分解决使用 Toast 和 Toast 模板时可能遇到的某些常见错误。很大程度上,用于 Toast 通知的多数疑难解答步骤与用于磁贴通知的步骤相同。除非特别声明,否则每个解决方案都适用于所有通知传送类型:本地、计划或推送通知。
不显示本地 Toast 通知
这种情况下最常见的问题是用于定义通知的 XML 在某些方面不正确。但也存在其他可能原因,这些步骤指导你完成:
- 检查用户设置
- 检查应用清单条目
- 检查图像大小
- 验证你的 URL
- 检查你的图像格式
- 检测 XML 的语法
- 检查通知的过期时间
检查用户设置
可能的原因:用户或管理员已通过设置禁用通知。在“电脑设置”->“通知”页面中检查全局通知打开/关闭开关以及每个应用程序的打开/关闭开关。对于管理员,有多个可以禁用通知的组策略。请咨询你的管理员,以确保启用通知。
解决办法:通过设置启用通知或者让管理员通过组策略启用通知。
有关详细信息,请参阅快速入门:发送 Toast 通知。
检查应用清单条目
可能的原因:应用部件清单未设置正确的信息来启用 Toast 通知传送。确保应用清单中的“支持 Toast”设定设置为“是”。如果有通知内容(如图像)是从 Internet 检索到的,请确保在应用清单中声明“Internet (客户端)”功能。
解决办法:在应用部件清单中启用通知特定的条目。
有关详细信息,请参阅快速入门:使用 Visual Studio 清单编辑器创建默认磁贴。
检查图像大小
可能的原因:所有通知的图像必须小于 1024 x 1024 像素且大小小于 200 KB。如果通知中的任何图像超过了这些尺寸中的任何尺寸,则会丢弃该通知。
解决办法:缩小图像。
有关详细信息,请参阅磁贴和 Toast 图像大小。
验证你的 URL
可能的原因:URL 语法错误。
通知中的图像以资源引用或文字路径的形式提供。如果使用路径,则必须使用以下三个协议之一提供:
前缀 | 使用 | 注意 |
---|---|---|
http:// 和 https:// | 联机存储的图像 | 这些图像可能缓存在本地,因此图像服务器可能未收到图像的请求。在这些 URL 中附加查询字符串。确保 Web 服务器返回原始图像,而不是 404(如果选择忽略查询字符串)。查询字符串示例:?scale=100&contrast=blk&lang=en-US 请注意,若要从 Internet 上检索任何通知内容,则应用必须在其应用部件清单中声明“Internet (客户端)”功能。 |
ms-appx:/// | 应用包附带的图像 | URI 接受正斜杠 (/) 或反斜杠 (\) 来分隔路径中的文件夹,但是大多数编程语言要求在指定反斜杠 (\\) 时使用转义符。请注意,此引用要求在冒号后面有三个正斜杠。 |
ms-appdata:///local/ | 应用在本地保存的图像 | 此位置对应于 Windows.Storage.ApplicationData.current.localFolder 返回的文件夹。路径中的文件夹分隔符必须使用转义符 (\\)。请注意,此引用要求在冒号后面有三个正斜杠。 |
注意 “/”字符作为每种规范类型中的分隔符。我们建议你始终使用“/”而不是“\”,从而避免在不注意的情况下与转义字符冲突。
格式正确的示例:
URL |
---|
https://www.contoso.com/icon.jpg |
ms-appx:///images/icon.png |
ms-appdata:///local/myDrawing.jpg |
格式错误的示例:
URL | 注意 |
---|---|
https://www.contoso.com\fail.png | HTTP 路径必须使用 / 字符。请不要使用 \ 字符。 |
http:www.contoso.com | HTTP 路径要求在冒号后面有两个斜杠 (//)。 |
“ms-appdata:///local/c:\\images\\Drawing.jpg” | 应用不能引用其本地存储之外的图像。 |
“ms-appx://images/triangle.png” | 对“ms-appx:”使用三个斜杠而不是两个斜杠。 |
检查你的图像格式
可能的原因:图像的格式不受支持。
通知只能使用 .png、.jpg/.jpeg 或 .gif 格式的图像。图像的格式还必须与其扩展名匹配。只是将不受支持的文件类型重命名为受支持的扩展名不起作用。
图像格式错误的最常见原因是位图到 Windows.Storage.ApplicationData.current.localFolder 存储的序列化。务必调用首选的格式,否则图像将存储为 Windows 位图并且它的头将包含“BMP”。
验证方法:验证图像格式的一个方法是,将图像加载到图像处理程序中并另存为 .jpg。如果你在通知中引用了这个新的 .jpg 文件并且没有再次发生此错误,则可能是图像格式错误。你还可以在 Visual Studio 二元编辑器中打开该文件并检查它的头。
解决办法:更改或更正图像格式。
检查你的 XML 语法和内容
可能的原因:XML 语法或验证错误。
除了基本语法之外,请确保你的 XML 完整且正确。XML 内容中的某些常见故障点包括:
- 区分大小写。标记名称、属性名称以及属性值全都区分大小写。请确保你的 XML 具有正确的大小写。
- 文本字符串不应包含保留的 XML 字符。例如,不能通过包含 <i> 和 </i> 标记来使 Toast 中的字符串变为斜体。如果要显示文字字符“<i>”,则应对其进行正确转义。有关 XML 中转义符的详细信息,请参阅 XML 字符实体和 XAML。
- 为 lang 属性提供的值必须符合 ITEF BCP 47 规范。
- 本地创建的 XML 字符串(针对本地或计划通知)必须使用 UTF-16 编码。通过推送通知发送或从 URL 轮询时,字符串应使用 UTF-8 编码。
- 如果要在 src 属性非空的 XML 负载中包含 image 元素,则必须确保包含对有效图像的引用,否则通知将失败。
你可以使用事件日志来在 Toast 通知不显示时检查错误。在事件查看器的“应用程序和服务日志 > Microsoft > Windows > 应用 > Microsoft-Windows-TWinUI > 操作”下查找有关你的 Toast 通知的事件。
验证方法:使用 XML 语法检查程序(如 Visual Studio 编辑器)查找基本语法错误。查看相应的模板引用 (ToastTemplateType) 以确保为合适的元素分配了合适的项。
解决办法:更改 XML 或使用其他模板来匹配内容。
确保你的通知未过期
可能的原因:过期时间值设置得太小。
如果通过 expirationTime 方法(对于本地通知)或者 X-WNS-TTL 标头字段(对于推送通知)在通知中设置过期时间,请注意这些值以毫秒为单位。例如,如果你希望 Toast 通知刚好持续一个小时,则该值应该为 60 * 60 * 1000 = 3600000。
解决办法:使用较大的值。
报告问题
如果已尝试使用本主题中建议的解决方案并尚未解决你的问题,则在 Microsoft 论坛上发布消息,与 Microsoft 开发人员和其他关注方共同讨论该问题。
对于推送通知,除了描述此问题之外,你可能还需要提供你的通道 URL 以及你从 WNS 收到的响应示例,包括 HTTP 错误代码和 HTTP 头。报告问题时你的应用服务器应该记录特定的头。有关详细信息,请参阅推送通知服务请求和响应头。