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

# ユーザーに In-App メッセージが繰り返し表示されるのはなぜですか？

> 配信制御を設定しているにもかかわらず In-App メッセージが繰り返し表示される理由（複数デバイスでのログイン、セッションの有効期限切れ、ログアウトのシナリオなど）について説明します。

## 問題の内容

配信制御の条件で 1 回のみ表示するように設定しているにもかかわらず、ユーザーに In-App メッセージが複数回表示されます。

<img src="https://mintcdn.com/moengage/wIFGWsQFEjsz2j4v/images/moengage_e0cd0c.png?fit=max&auto=format&n=wIFGWsQFEjsz2j4v&q=85&s=cc1cb65e0e369e87f657453ae9d0ceac" alt="Screenshot_2023-02-13_at_10.03.34_PM.png" width="2698" height="534" data-path="images/moengage_e0cd0c.png" />

## このようなシナリオが発生するケース

* ユーザーが同じユーザープロファイルで複数のデバイスにログインし、両方のデバイスでトリガー条件を実行した場合。
* ユーザーが一度ログアウトしてから再度ログインし、In-App のトリガー条件を実行した場合。
* セッションの有効期限切れや非アクティブ状態によってユーザーをログアウトさせるアプリで、ユーザーが再度ログインしてアプリを使用した場合。

## この問題が発生する理由

In-App メッセージは、ユーザーのデバイス ID に基づいてポップアップウィンドウを表示するように設計されています。ユーザーがログアウトすると、そのユーザーは匿名ユーザーとして設定され、デバイスの配信制御がリフレッシュされます。ユーザーが再度ログインすると、以前の配信制御が削除され、ユーザーがキャンペーンを表示できる最大回数のカウントが 0 にリセットされるため、トリガー条件を実行するとキャンペーンが再び表示されます。

## 想定される動作

設計上、ユーザーが複数のデバイスから同じユーザー ID でログインした場合や、ユーザーが手動でログアウトして再度ログインした場合は、キャンペーンが再び表示されます。これは解決できません。MoEngage がキャンペーンの複数回表示を回避できるのは、ログアウトがユーザーによるものではなく、アプリによって開始された場合のみです。

## この問題の解決方法

セッションの有効期限切れや非アクティブ状態によってアプリがユーザーをログアウトさせた場合、ログイン時にキャンペーンが再び表示されます。これを回避するには、ユーザーが自動的にログアウトされる際に、アプリから MoEngage SDK への呼び出しを削除する必要があります。以下の方法で対応できます。

* Android の場合は、自動ログアウトの呼び出しから次の関数を削除します。自社側でログアウトを呼び出す際に、MoEngage のログアウト関数を呼び出さないでください。

  <CodeGroup>
    ```kotlin Kotlin theme={null}
    MoECoreHelper.logoutUser(context)
    ```

    ```java Java theme={null}
    MoECoreHelper.INSTANCE.logoutUser(context);
    ```
  </CodeGroup>

* iOS の場合は、自動ログアウトの呼び出しから次の関数を削除します。自社側でログアウトを呼び出す際に、MoEngage のログアウト関数を呼び出さないでください。

  <CodeGroup>
    ```objective-c Objective C theme={null}
    [[MoEngageSDKAnalytics sharedInstance] resetUser];
    ```

    ```swift Swift theme={null}
    MoEngageSDKAnalytics.sharedInstance.resetUser()
    ```
  </CodeGroup>
