コンテンツにスキップ

デバッグ

GitHub

通知が登録されない、届かない、表示されない、またはCapgo統計を更新しない場合に使用するチェックリストです。

ネイティブcodeをデバッグする前に、Capgoがデバイスを認識できることを確認してください。

  1. アプリを開いて、テストしたいユーザーとしてサインインしてください。
  2. サインイン後、「{call}」 CapgoNotifications.register(...) サインイン後
  3. CapgoでCapgoを開きます。 通知 > 受信者検索.
  4. 外部顧客IDで検索してください。

少なくとも1台のアクティブなデバイスが表示されます。

  • recipientKey
  • deviceKey
  • プラットフォーム android または ios
  • 許可状態
  • アプリバージョン
  • プラグインバージョン
  • タグと属性

検索結果がデバイスが見つからない場合、送信先のユーザーをターゲットにすることができません。

一時的なデバッグリスナーを追加します。

Section titled “臨時デバッグリスナーの追加”

テスト中は一時リスナーを追加し、実稼働前にノイズの多いログを削除してください。

await CapgoNotifications.addListener('registrationChanged', (token) => {
console.log('[CapgoNotifications] registrationChanged', token.value.slice(0, 12))
})
await CapgoNotifications.addListener('notificationReceived', (notification) => {
console.log('[CapgoNotifications] notificationReceived', notification.id, notification.data)
})
await CapgoNotifications.addListener('notificationOpened', (event) => {
console.log('[CapgoNotifications] notificationOpened', event.notification.id, event.actionId)
})
await CapgoNotifications.addListener('backgroundNotification', async (event) => {
console.log('[CapgoNotifications] backgroundNotification', event.notification.id, event.notification.data)
await event.finish()
})

チームやCapgoサポートと一緒にデバッグするときは、以下の情報を収集してください。

  • CapgoアプリID
  • アプリパッケージIDまたはiOSバンドルID
  • デバイスプラットフォームとOSバージョン
  • アプリバージョンとビルド番号
  • プラグインバージョン
  • 外部顧客ID
  • recipientKeydeviceKey 登録または受信者検索から。
  • キャンペーンIDまたは通知ID。
  • アプリが前景、バックグラウンド、強制終了、または新規インストールされていたかどうか。
  • 問題を再現した実行のデバイスログ。

実際のデバイスを1台接続して、テスト通知を送信してください。

Androidの場合:

  • Android Studioのログキャットを開く。
  • アプリパッケージIDでフィルタリングする。
  • 通知許可要求、ネイティブトークン更新、メッセージ受信、JavaScriptリスナーログを確認する。
  • 表示される通知が表示されない場合、通知チャンネルの重要性とAndroid 13以降のパーミッション状態を確認してください。

iOSの場合:

  • Xcodeから実機でアプリを実行してください。
  • Xcodeコンソールまたは デバイスとシミュレータ を確認してください。
  • バンドルIDをフィルタして CapgoNotifications.
  • 確認してください。 AppDelegate.swift リモート通知が送信され、バックグラウンドモードの機能が有効になっていることを確認してください。

1回のフォアグラウンドテスト、1回のバックグラウンドテスト、1回の静的更新チェックテストの順序で送信してください。この順序は、JavaScriptリスナーの問題とOSのバックグラウンド配信制限を区別するのに役立ちます。

__CAPGO_KEEP_0__ セットアップコマンドを実行するフォルダからコマンドを実行してください capacitor.config.*:

ターミナルウィンドウ
npx @capgo/cli@latest notifications setup com.example.app

Capgo セットアップコマンドがアプリIDを推測できなかった場合、上記のように明示的に指定してください。パッケージのインストールが失敗した場合、Capgo があなたの npm アカウントでプライベートプレビュー パッケージアクセスを有効にしていることを確認し、再度コマンドを実行してください。

受信者検索リストにデバイスが表示されない

セクション「受信者検索リストにデバイスが表示されない」

確認してください:

  • register アプリが認証済みユーザーを持つ後で呼び出される
  • externalId 検索するユーザーIDがダッシュボードに一致する
  • identityProof 同じユーザーIDでバックエンドが発行した appId かつ externalId.
  • appId in configure Capgoアプリに一致します。
  • consent __CAPGO_KEEP_0__は設定されていません。 false __CAPGO_KEEP_0__が設定されていない場合
  • デバイスは__CAPGO_KEEP_0__にネットワーク接続があります。 https://api.capgo.app.
  • ネイティブプッシュトークンが作成されました。使用 registrationChanged トークン更新を確認するには

証明はCapgoアプリIDと外部IDに紐付けられています。どちらの値も変更すると、新しい証明を生成する必要があります。

証明を永遠にキャッシュしないでください。証明をアプリ間で共有しないでください。ログイン後にバックエンドから証明を生成し、アプリに返し、 register.

デバイスが登録されましたが、パーミッションが拒否されました

「デバイスが登録されましたが、パーミッションが拒否されました」

プラグインはユーザーがパーミッションを拒否した場合でもデバイスの状態を登録できます。デバイスは表示されますが、通知は表示されません。

OSのプロンプト前にパーミッションの説明画面を表示してください。ユーザーが得るものを説明し、許可を求めるのはアクションが意味をなすときに限ります。

配信の問題

「配信の問題」

キューイングされましたが、送信されませんでした

「キューイングされましたが、送信されませんでした」

確認してください:

  • プラットフォームのクレデンシャル状態は configured Capgo
  • ワーカー環境にはダッシュボードによって示される精確なシークレット参照が含まれます。
  • アプリのパッケージIDまたはバンドルIDは、プラットフォームのプッシュ設定と一致しています。
  • ターゲットアウディエンスは少なくとも1台のアクティブなデバイスに解決しています。
  • キャンペーンは、デバイスが持っていないタグまたはセグメントに限定されていません。

送信されたが受信されていない

「送信されたが受信されていない」セクション

確認:

  • デバイスはオンラインです。
  • ユーザーがアプリを強制終了していません。
  • OS通知の許可が付与されています。
  • Androidのバッテリー制限がテスト中のアプリをブロックしていません。
  • iOSのLow Power Modeとバックグラウンドリフレッシュ制限がバックグラウンド配信に影響を与えていません。
  • 通知は同じコラプスIDを持つ別の通知に置き換えられていません。

Native pushプラットフォームは、通知を受け入れた後でも、遅延、制限、凝集、または配信を中止することができます。提供されたステータスを「配達の受け入れ」として扱い、デバイスが表示したことを証明するものではありません。

確認:

  • アプリが前景ではなかった。前景通知は通常、JavaScriptで配信され、アプリが表示するUIを決定することができます。
  • Android通知チャンネルの重要度が表示のアラートを表示するのに十分です。
  • Android 13以降の通知許可が付与されました。
  • iOSのFocus、通知の概要、またはアプリごとの通知設定が通知を隠していません。
  • バッジのクリアまたはアプリを開くロジックが、配信された通知をテスト中に削除していません。

バックグラウンドコールバックが実行されない

バックグラウンドコールバックが実行されない

バックグラウンド通知はベストエフォートです。OSはそれらをスキップすることができます。

確認:

  • iOSには バックグラウンドモード > Remote通知 有効になっている。
  • iOS AppDelegate.swift リモート通知を CapgoNotificationsRemoteNotification.
  • 物理デバイスでiOSのバックグラウンド動作をテストします。
  • ユーザーによってアプリが強制終了されていません。
  • バックグラウンドハンドラーが呼び出されます。 finish().
  • コールバック内で作業するのは短時間、ネットワークセーフ、idempotentです。

iOSでは、バックグラウンド通知が遅延する可能性があります。大量の通知を送信したり、処理時間が長かったり、ユーザーがアプリを開くことが少なかったりすると、予想されるプラットフォームの動作です。

バックグラウンドが開始されたが完了していません

セクション「バックグラウンドが開始されたが完了していません」

統計が示す場合 background_started 通知が送信されない場合 background_finishedJavaScriptハンドラーが投げられた、タイムアウトした、または呼び出されなかった可能性があります。 finish().

ハンドラーをwrapする try/finally:

await CapgoNotifications.addListener('backgroundNotification', async (event) => {
try {
await doShortBackgroundWork(event.notification.data)
} finally {
await event.finish()
}
})

更新チェック通知が届いたが、更新がインストールされない

セクション「更新チェック通知が届いたが、更新がインストールされない」

確認:

  • @capgo/capacitor-updater がインストールされ、設定されているかどうかです。
  • autoUpdater is true or enableUpdaterIntegration または
  • が呼び出されました。
  • の通知設定では、プッシュアップデートのチェックが可能です。
  • The app has a newer bundle available in Capgo.
  • のバンドルが__CAPGO_KEEP_0__で新しいバージョンが利用可能です。 next のアップデートのインストールモードは正しいです: set は、次の再起動またはバックグラウンドサイクルで待機しています。

は、安全にアップデートできるようになったらすぐにインストールされます。

const result = await CapgoNotifications.runUpdateCheck({
enabled: true,
installMode: 'next',
})
console.log(result)

手動の確認が正常に終了した場合 unavailable, 最初にアップデート プラグインの設定を確認してください。

確認:

  • 宛先の検索で正しいデバイスに解決されるかどうか
  • テストしているランチャーまたはホーム画面のプラットフォームがアプリ バッジをサポートしているか
  • ユーザーがOSの通知設定でバッジを無効にしていないか
  • アプリが起動時に即座にバッジをクリアしていないか
  • ローカル呼び出しとバックエンドのバッジ送信を競合させていないか setBadge Copy to clipboard

通知の送信は少なくとも1回行われます。キューのリトライとプラットフォームのリトライは、送信を重複させる可能性があります。通知IDとコラプスIDを使用して、idempotentである必要があるアプリのアクションを実行してください。

古いデバイス用の統計値が見つからない

「古いデバイス用の統計値が見つからない」セクション

分析エンジンのレジストリは、有効なデバイス用に設計されており、永久的なデータベースではありません。プラグインは、開始、トークン更新、外部IDの変更、有効なデバイスの保持期間前に定期的に登録を更新する必要があります。

開いたイベントが見つからない

「開いたイベントが見つからない」セクション

確認してください:

  • 通知には安定した id.
  • notificationOpened リスナーはアプリ起動時に登録されます。
  • プラグインはアプリがカスタムcodeを開く代わりにネイティブのオープン フローを置き換えていないため、プラグインはそれを見てしまいます。
  • ユーザーは実際に通知をタップしたのではなく、アプリを手動で開いていない。

API デバッグ コマンド

API デバッグ コマンド

宛先を検索:

ターミナル ウィンドウ
curl -X POST 'https://api.capgo.app/notifications/recipients/lookup' \
-H 'Content-Type: application/json' \
-H 'x-api-key: CAPGO_API_KEY' \
-d '{
"appId": "com.example.app",
"externalId": "customer-user-123"
}'

統計を読み取る:

ターミナル ウィンドウ
curl 'https://api.capgo.app/notifications/stats?app_id=com.example.app&days=7' \
-H 'x-api-key: CAPGO_API_KEY'

フロントグラウンド テストを送信:

ターミナル画面
curl -X POST 'https://api.capgo.app/notifications/send' \
-H 'Content-Type: application/json' \
-H 'x-api-key: CAPGO_API_KEY' \
-d '{
"appId": "com.example.app",
"target": { "externalId": "customer-user-123" },
"payload": {
"title": "Capgo test",
"body": "Open this notification to test events.",
"data": { "debug": "true" }
}
}'

一般的な原因

一般的な原因
症状可能性のある原因
デバイスが検索から見つかりませんregister 呼び出されていない、証明の不一致、同意が拒否され、App ID の不一致。
権限が拒否されましたOS のプロンプトが拒否されました、またはまだ要求されていません。
キューに追加されましたが、送信の統計はありませんプラットフォームのクレデンシャルが欠落している、または無効になっています。
送信されたが受信された統計がないデバイスがオフライン、OSがスローダウン、またはトークンが無効です。
フロントグラウンド通知のログが出るがバナーは出ないアプリがフロントグラウンドで実行されているため、自社のインアプリUIを表示する必要があります。
iOS上ではバックグラウンドが実行されない機能が欠落している、AppDelegateのフォワーディングが欠落している、またはOSがスローダウンしている
アップデートチェックは何もしないアップデーター統合が無効、バンドルが新しいものではない、またはチャンネルが間違っている
バッジがリセットされるアプリ起動時にcodeがバッジやローカルとバックエンドのバッジの書き込みが競合する

デバイスの登録とテスト通知の確認後、 はじめに プロダクションアプリにバッジ、キャンペーンターゲット、静音の更新チェックを組み込むには