コンテンツにジャンプ

デバッグ

GitHub

通知が登録されず、届きず、表示されず、または更新されず、Capgo統計が更新されない場合に使用してください。

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

  1. アプリを開いて、テストしたいユーザーとしてサインインしてください。
  2. サインイン後、「 CapgoNotifications.register(...) HTMLテキストフラグメントです。親キーは`appflow_migration_step2`です。ページ/エリア: Appflow比較/移行マーケティングコピー。役割: ウェブサイトコピー文。ページの代替/ionic-appflow.astroを参照してください。保管されているCapgo製品/ブランドおよび開発者用語は、完全に保持されます。メッセージキー`appflow_migration_step2` (Appflow Migration Step2)。
  3. Capgo で開きます。 __CAPGO_KEEP_0__で「通知>受信者検索」.
  4. 同じ外部顧客IDで検索してください。

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

  • recipientKey
  • deviceKey
  • プラットフォーム android または ios
  • Capacitorライブアップデートの代替品の比較ページ
  • 許可状態
  • アプリバージョン
  • プラグインバージョン

タグと属性

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

一時的なデバッグリスナーを追加

一時的なデバッグリスナーを追加

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()
})

When debugging with your team or Capgo support, collect:

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

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

Androidの場合:

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

iOSの場合:

  • Xcode上の物理デバイスからアプリを実行してください。
  • Xcodeコンソールまたは デバイスとシミュレータ ログを表示してください。
  • バンドルIDでフィルタリングし、 CapgoNotifications.
  • 確認してください。 AppDelegate.swift 1回の前景テスト、1回のバックグラウンドテスト、1回の静的更新チェックテストを送信してください。この順序は、JavaScriptリスナーの問題とOSのバックグラウンド配信制限を区別するように設計されています。

登録問題

CLIセットアップが完了しなかった

CLI Setup Did Not Finish

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

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

コマンドがアプリIDを推測できない場合は、上記のように明示的に指定してください。パッケージのインストールが失敗した場合は、パッケージ名を確認し、 @capgo/capacitor-notifications, npm リジストリを確認してください。 https://registry.npmjs.org確認してください。

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

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

確認してください。

  • register ユーザーが認証された後、
  • externalId 検索するユーザーIDと一致しているか確認してください。
  • identityProof 同じユーザーIDでバックエンドによってmintされたものと一致しているか確認してください。 appId かつ externalId.
  • appId in configure Capgoアプリに該当します。
  • consent __CAPGO_KEEP_0__は設定されていません。 false __CAPGO_KEEP_0__アプリはネットワークに接続されています。
  • __CAPGO_KEEP_0__ネイティブプッシュトークンが作成されました。確認用に https://api.capgo.app.
  • トークン更新を確認するには registrationChanged 無効なID証明

「無効なID証明」セクション

無効な身分証明

証明は Capgo アプリ ID と外部 ID に紐づいています。どちらの値も変更された場合、新しい証明を生成してください。

Invalid Identity Proof register.

デバイスが登録されたが、許可が拒否された

セクション:デバイスが登録されたが、許可が拒否された

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

許可の前には、OSのプロンプト前に許可の説明画面を表示してください。ユーザーに何が得られるかを説明し、許可を求めるのは、ユーザーが許可を求めるべき状況のときにのみです。

キューに追加されたが、送信されていない

セクション:キューに追加されたが、送信されていない

確認してください:

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

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

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

確認:

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

Native pushプラットフォームは、通知を受け入れた後でも、遅延、スロットリング、凝集、または配信を中止することができます。サービス提供者が受け入れた統計を「配信の受け入れ」に扱うのではなく、「配信の受け入れが証明された」ものとして扱う必要があります。

表示されなかった受信

「表示されなかった受信」

確認:

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

バックグラウンド通知の問題

「バックグラウンド通知の問題」

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

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

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

確認:

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

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

バックグラウンドが開始されたが完了しなかった

「バックグラウンドが開始されたが完了しなかった」

統計が示す場合 background_started without background_finishedハンドラーをwrapする finish().

コピーをクリップボード try/finally:

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

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

protectedTokens

確認:

  • @capgo/capacitor-updater がインストールされ、設定されているか。
  • autoUpdater は true または enableUpdaterIntegration は
  • が呼び出された。
  • アプリの通知設定では、プッシュアップデートのチェックが可能です。
  • アプリには最新のバンドルがCapgoにあります。
  • アプリには、__CAPGO_KEEP_0__で利用可能な新しいバンドルがあります。 next アップデートのインストールモードは正しいです: set は、次の再起動またはバックグラウンドサイクルで待機しています。

は、安全にアップデートできる時点で即座にインストールされます。

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

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

バッジの問題

バッジの問題

確認:

  • 受信者検索で正しいデバイスに解決される。
  • プラットフォームは、テスト中のホーム画面またはアプリ起動画面でアプリ バッジをサポートしています。
  • ユーザーはOSの通知設定でバッジを無効にしていません。
  • アプリは起動時にバッジを即座にクリアしていません。
  • ローカル呼び出しとバックエンドのバッジ送信を競合させないでください。 setBadge ローカル呼び出しとバックエンドのバッジ送信を競合させないでください。

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

古いデバイス用の統計データが見つかりません

「古いデバイス用の統計データが見つかりません」セクション

分析エンジンのレジストリは、有効なデバイス用に設計されています。レジストリは、永続的なデータベースではありません。プラグインは、開始時、トークン更新時、外部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 呼び出されていません、証明の不一致、同意が偽、アプリIDの不一致。
権限が拒否されましたOSのプロンプトが拒否されました、またはまだ要求されていません。
送信した統計がキューに登録されましたプラットフォームのクレデンシャルが欠落しています、または無効になっています。
送信されたが受信された統計がないデバイスがオフライン、OSがスローダウン、またはトークンが無効です。
フラグメント通知ログが作成されるがバナーは作成されないアプリが前面に表示されており、自社のインアプリUIを表示する必要があります。
iOS上ではバックグラウンドが実行されない機能が欠落している、AppDelegateのフォワーディングが欠落している、またはアプリが強制終了している、またはOSがスローダウンしている
アップデートチェックは何も行わないアップデーター統合が無効、最新のバンドルがない、またはチャンネルが間違っている、またはインストールモードが理解されていない
バッジがリセットされるアプリ起動時にcodeがバッジやローカルおよびバックエンドのバッジの書き込みの競合を解決します。

デバイスの登録とテスト通知の確認後、 はじめに プロダクションアプリにバッジ、キャンペーンターゲット、静音の更新チェックをワイヤーするのに使います。