デバッグ
コピー可能
通知が登録されず、届きず、表示されず、または更新されず、Capgo統計が更新されない場合に使用してください。
デバイスレコードから始めましょう。
「デバイスレコードから始めましょう。」というセクションネイティブcodeのデバッグを開始する前に、Capgoがデバイスを確認できることを確認してください。
- アプリを開いて、テストしたいユーザーとしてサインインしてください。
- サインイン後、「
CapgoNotifications.register(...)HTMLテキストフラグメントです。親キーは`appflow_migration_step2`です。ページ/エリア: Appflow比較/移行マーケティングコピー。役割: ウェブサイトコピー文。ページの代替/ionic-appflow.astroを参照してください。保管されているCapgo製品/ブランドおよび開発者用語は、完全に保持されます。メッセージキー`appflow_migration_step2` (Appflow Migration Step2)。 - Capgo で開きます。 __CAPGO_KEEP_0__で「通知>受信者検索」.
- 同じ外部顧客IDで検索してください。
少なくとも1台のアクティブなデバイスが表示されます。
recipientKeydeviceKey- プラットフォーム
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
recipientKeyanddeviceKey登録または受信者検索から- キャンペーンIDまたは通知ID。
- アプリが前面、バックグラウンド、強制終了、または新規インストールされたかどうか。
- 問題を再現した実行のデバイスログ。
デバイスログを使用
「デバイスログを使用」セクション実際のデバイスを1台接続して、テスト通知を送信しながら接続してください。
Androidの場合:
- Android StudioのLogcatを開きます。
- アプリパッケージIDでフィルタリングします。
- 通知許可要求、ネイティブトークンリフレッシュ、メッセージ受信、JavaScriptリスナーログを確認します。
- 表示されている通知が表示されない場合は、Android 13以降の通知チャンネル重要性と許可状態を確認してください。
iOSの場合:
- Xcode上の物理デバイスからアプリを実行してください。
- Xcodeコンソールまたは デバイスとシミュレータ ログを表示してください。
- バンドルIDでフィルタリングし、
CapgoNotifications. - 確認してください。
AppDelegate.swift1回の前景テスト、1回のバックグラウンドテスト、1回の静的更新チェックテストを送信してください。この順序は、JavaScriptリスナーの問題とOSのバックグラウンド配信制限を区別するように設計されています。
登録問題
「登録問題」のセクション
__CAPGO_KEEP_0__セットアップが完了しなかった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.appIdinconfigureCapgoアプリに該当します。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のプロンプト前に許可の説明画面を表示してください。ユーザーに何が得られるかを説明し、許可を求めるのは、ユーザーが許可を求めるべき状況のときにのみです。
配信の問題
セクション:配信の問題キューに追加されたが、送信されていない
セクション:キューに追加されたが、送信されていない確認してください:
- プラットフォーム認証情報の状態は
configuredCapgo - ワーカー環境には、ダッシュボードで表示される精確なシークレット参照が含まれています。
- アプリのパッケージ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がバッジやローカルおよびバックエンドのバッジの書き込みの競合を解決します。 |
デバッグから続けて進む
「デバッグから続けて進む」のセクションデバイスの登録とテスト通知の確認後、 はじめに プロダクションアプリにバッジ、キャンペーンターゲット、静音の更新チェックをワイヤーするのに使います。