> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 应用内消息故障排除

> 关于应用内消息的常见问题和故障排除步骤。

本指南涵盖了关于应用内消息的常见问题和故障排除步骤。

## 高级设计故障排除

如何在使用浏览器时检查应用内设计在不同设备上的显示效果。这些步骤使用 macOS 上的 Chrome 版本 138。

1. 打开应用内消息块编辑器。
2. 在预览中，右键单击任何应用内消息块并选择"检查"。
3. 在元素选项卡中，向上导航 DOM 树以找到 `#document` 元素。

<Frame caption="应用内消息块编辑器元素选项卡中的 #document 元素">
  <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/iam/inspect-iam-block-editor.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=26dcab4bc1031fafef7dacb14031a820" alt="应用内消息块编辑器元素选项卡中的 #document 元素" width="2844" height="1498" data-path="images/iam/inspect-iam-block-editor.png" />
</Frame>

4. 右键单击 `#document` 元素中的链接并选择"在新标签中打开"。
5. 您将在新标签中看到应用内消息设计。
6. 再次右键单击新标签的应用内消息设计并选择"检查"。
7. 在元素选项卡中，选择"切换设备工具栏"按钮。

<Frame caption="应用内消息块编辑器元素选项卡中的切换设备工具栏按钮">
  <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/iam/inspect-iam-device-toggle.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=944c8b5d5a2fbfb575e18a5fb9b131b2" alt="应用内消息块编辑器元素选项卡中的切换设备工具栏按钮" width="2864" height="1408" data-path="images/iam/inspect-iam-device-toggle.png" />
</Frame>

8. 更新尺寸以查看在不同设备上的显示效果。我们建议在 `iPhone SE` (375x667) 和 `iPad Pro` (1024x1366) 上进行测试。

<Frame caption="在 Chrome DevTools 中测试不同的设备尺寸">
  <img src="https://mintcdn.com/onesignal/yt4lRKoquAlWvRvF/images/iam/inspect-iam-device-test.png?fit=max&auto=format&n=yt4lRKoquAlWvRvF&q=85&s=74f62633c6bd843a7e6e5cd8b3209b06" alt="在 Chrome DevTools 中测试不同的设备尺寸" width="1258" height="1548" data-path="images/iam/inspect-iam-device-test.png" />
</Frame>

## 能够接收应用内消息的最低 Android 和 iOS 版本是什么？

能够接收应用内消息的最低 Android 版本是 4.4。如果设备版本低于此版本，应用内消息将不会显示。

能够接收应用内消息的最低 iOS 版本是 10.0。如果设备版本低于此版本，应用内消息将不会显示。

## 推荐的图像尺寸是什么？

我们根据当前显示设备的尺寸显示应用内消息。设备有一些常见的纵横比和分辨率（特别是 Android），这些都可能影响应用内消息的查看。

`16:9` 纵横比是设备最常见的，但 `4:3` 和 `3:2` 纵横比是不错的折衷选择。

## 我可以通过 API 创建应用内消息吗？

目前所有应用内消息都需要通过 OneSignal 仪表板创建。

在应用的每个页面上，您可以设置我们的 `addTrigger` 方法，并通过您自己的 API 请求向应用传递在仪表板中设置的触发器 `key:value`，从而基于您自己的网络请求触发 IAM。

## 我已更新了我的应用内消息，应用内消息更改何时生效？

一旦您从仪表板更新应用内消息，更改将立即生效，终端用户将在应用关闭 30 秒后重新打开时看到更新的消息。

更多详情，请参阅：[为什么 IAM 数据没有更新？](#why-are-in-app-messages-data-not-updating)。

## 标签替换或消息个性化是否可用？

是的，标签替换仅在 iOS SDK 版本 2.16.4+ 和 Android SDK 版本 3.16.0+ 上支持

您可以使用数据标签来个性化用户的内容和点击操作行为。

## 如何发送带有消息本地化的应用内消息？

目前，您可以为不同语言设置不同的应用内消息，并基于设备语言过滤器定位 [分段](./segmentation)。

## 为什么我的应用内消息显示为空白或全白？

应用内消息使用 webview 来显示内容。如果您在消息中发送内容但显示空白，那么您可能正在更改布局约束。检查您应用的自定义 webview 设置。在 Android 上检查的一个常见示例是 `WindowManager.LayoutParams`。

## 为什么应用内消息的数据没有更新？

### 设计更新

在 OneSignal 仪表板中对应用内消息所做的更改将在应用关闭 30 秒后在应用中反映出来。确保在保存 IAM 的任何更改后，让应用关闭或置于后台 30 秒，然后打开时，您将在下次触发时看到更改。

使用 **发送到测试设备** 按钮不会反映任何标签替换。您必须正常触发 IAM 才能看到标签替换个性化。

### 分析、点击、展示次数更新

使用 **发送到测试设备** 按钮不会为 IAM 分析做出贡献。您必须在不使用此按钮的情况下触发 IAM 才能看到统计更新。

如果您没有使用 **发送到测试设备** 按钮，那么您可以按照 [捕获调试日志](./capturing-a-debug-log) 指南来排除问题。如果您仍需要帮助，请将从应用启动到重现结束的完整日志作为 .txt 文件分享给我们的支持团队：`support@onesignal.com`。

## 重复的应用内消息

应用内消息可能在设备上显示重复的常见原因有：

* 多个看起来相同的 IAM 处于活动状态。
* 消息被触发得太频繁。检查 [如何添加触发器](./iam-triggers) 和 [您希望多久显示一次此消息？](./in-app-messages-setup) 选项。

如果您仅在 Android 上看到这种情况，那么这可能发生在 IAM 显示时点击返回按钮或切换活动时。两种情况都会导致 IAM 再次出现。

这是由于 IAM `视图` 是当前 `活动` 的子视图造成的。每当活动之间发生意图时，IAM 会模拟当前 `活动` 的生命周期，在某些情况下会导致闪烁。 最常见的情况是 IAM 会隐藏自己，然后在新活动中重新显示。

不幸的是，这种功能是在不需要任何权限的情况下在 `应用程序` 级别显示 IAM 的最接近的可用方式。 更多详情请参见此开放的 [GitHub 问题](https://github.com/OneSignal/OneSignal-Android-SDK/issues/952)。请随时在 GitHub 问题上直接回复我们的工程师。此外，我们的 SDK 是开源的，所以如果您对修复或其他解决方案有想法，我们很乐意查看任何提交的 PR！

如果您仍然遇到此问题且不是上述原因之一，请与我们的支持团队分享以下详细信息：

* 使用的 OneSignal SDK 版本
* 设备操作系统版本
* 从应用启动到问题点的 Xcode 日志或 Android Studio logcat
* 您应用中的任何其他库或插件
* 重现问题的详细信息。

***
