Web SDK API
認証
開発者が初期化を実行する場合、必要な情報を渡す必要があります。このデータ構造は開発者サーバーによって生成され、ブラウザに返送され、開発者がブラウザに実行を許可するMTpush初期化に使用されます。開発者は、このデータを取得するために呼び出すことができるすべてのユーザーが正当なユーザーであることを保証する必要があります。
データ構造の初期化
interface MTInitInfo {
website_push_id: string;
code: number;
master_secret: string;
passwd: string;
pull: number;
regid: string;
sess: string;
tagalias: number;
uid: number;
vapid_pubkey: string;
}
type dataType = {
code: number,
content: string,
message: string,
};
interface InitType {
appkey: string; //URORAプラットフォームで開発者が登録したアプリケーションのappkey、必須
user_str: string; //ユーザーの一意の識別子、必須
swUrl?: string; //デフォルト値 "/sw.min." + sdkEnv.version + ".js"
debugMode?: boolean; //デフォルト値 false
webSocketUrl?: string; //指定されていない場合、baseUrlが使用されます
fail?: (data: dataType | undefined) => void; //初期化失敗時のコールバック
success?: (data: dataType | undefined) => void; //初期化成功時のコールバック
webPushcallback?: def;
canGetInfo?: (d: MTInitInfo) => void;
custom?: (Callback: () => void) => void; //カスタムプロンプトが利用可能な場合のコールバック、操作後にCallbackを呼び出して適用
maCompletion?: (code: number, msg: string) => void; //ma-sdk初期化完了時のコールバック
/**
* 通知をクリックした際のリダイレクトリンク、優先順位:通知送信時に設定されたURL -> InitType.openUrl -> 統合ページのドメイン
* Safariブラウザの場合、システムチャネルを通じて配信されたメッセージには追加の処理が必要です:
* SDKを読み込む前に、window.MTpushInterfaceTempData = { openUrl: 'https://example.com' } を設定してください
*/
openUrl?: string;
/**
* swUrlをエンコードするかどうか
* 使用シナリオ:
* swUrlに@のような特殊文字が含まれており、サーバーがこのURLリソースへのアクセスを制限している場合、Service Workerの登録に失敗する可能性があります;
* Service Workerを再登録する仕組みが必要であり、リトライ時にswUrlをエンコードする必要があります。
*/
encodeSwUrl?: boolean;
}
同じスコープ内では1つのサービスワーカーのみ登録できます。初期化成功時に「'subscribe' on 'PushManager' の実行に失敗しました: サブスクリプションに失敗しました - アクティブなService Workerがありません」のようなエラーが報告された場合は、他のサービスワーカーとの競合を確認してください。サービスワーカーを統合するか、サービスワーカーのスコープを解決する必要がある場合があります。
SDK初期化
インターフェース説明
インターフェースを初期化します。
window.MTpushInterface.init(Object:InitType)
パラメータ説明
- 詳細については、[InitTypeの説明](/zh_CN/docs/web-push/sdk/web-sdk-api#Initialize data structure)を参照してください。
- コールバックオブジェクトデータの説明:
| パラメータ名 | パラメータ型 | パラメータの説明 |
|---|---|---|
| code | number | 戻りコード、0は成功を意味し、その他は失敗を意味します。[エラーコード](#error code)を参照してください |
| message | string | 結果の説明 |
| content | string | 登録に失敗した場合(1003)に失敗メッセージを返します |
呼び出し例
MTpushInterface.init({
appkey: "xxx",
user_str: "adminDemo",
fail(data) {
console.log("オンラインプッシュの作成に失敗しました", data);
},
success(data) {
console.log("オンラインプッシュの作成に成功しました", data);
},
webPushcallback(cod, tip) {
console.log("ユーザーが取得した状態コードとプロンプト", code, tip);
},
//swUrl?: string; //デフォルト "/sw.min." + sdkEnv.version + ".js"
canGetInfo(d) {
//この時点で、RegIdを取得するか、dのすべてのデータを取得できます
console.log("RegIdを取得", MTpushInterface.getRegistrationID(), d);
// MTpushInterface.setTagsAlias({ tags: ["test1", "test2"], alias: "swefgwwefwfwfwf" });
},
custom: (reqPermission) => {
//カスタムプロンプト設定を使用する場合は、reqPermissionを呼び出して権限を要求して設定する必要があります。カスタムコールバックで権限要求関数を取得し、適切なタイミングで直接reqPermissionを呼び出して通知権限を要求します。
document.getElementById("xx")?.addEventListener("click", reqPermission); },
});
RegistrationIDの取得
インターフェース説明
このAPIを呼び出して、現在のアカウントに対応するRegistrationIDを取得します。初期化署名が成功した後にのみ対応する値が返され、それ以外の場合は空の文字列が返されます。このメソッドはcanGetInfoコールバックがトリガーされた後に呼び出す必要があります。
window.MTpushInterface.getRegistrationID()
呼び出し例
var rid = window.MTpushInterface.getRegistrationID();
プッシュの停止
このAPIを呼び出して、バックグラウンドと確立されたプッシュ永続接続を切断し、プッシュメッセージの受信を停止します。
window.MTpushInterface.mtPush.stopPush()
プッシュメッセージの監視
インターフェース説明
初期化の前にメッセージリスナーを呼び出すことを推奨します。
window.MTpushInterface.onMsgReceive(fn)
パラメータ説明
| パラメータ名 | パラメータ型 | パラメータの説明 |
|---|---|---|
| fn | function | メッセージ受信と処理関数 |
呼び出し例
window.MTpushInterface.onMsgReceive(function (res) {
if(res.type===0){
// res.data.messages[]
// res.data.messages[].msg_id
// res.data.messages[].title
// res.data.messages[].content
// res.data.messages[].extras
}else{
// res.data.title
}
});
戻りデータ
| パラメータ名 | パラメータ型 | パラメータの説明 |
|---|---|---|
| type | number | |
| data | Object | メッセージコンテンツ |
Engagelabチャネルメッセージ配列(messages)
| パラメータ名 | パラメータ型 | パラメータの説明 |
|---|---|---|
| msg_id | string | メッセージID |
| title | string | メッセージタイトル |
| content | string | メッセージコンテンツ |
| extras | Object | メッセージ追加フィールド |
システムチャネルメッセージデータ
w3cインターフェースNotificationOptionsをサポートしています。詳細についてはmdn web docsを参照してください。
プッシュサービス状態の確認
window.MTpushInterface.getPushAuthority()
戻されるデータ構造は次のとおりです:
{
mtPush: {
code:1, //1は成功、-1は初期化中、0は失敗
msg:'success'
},
webPush: {
code:1, // 0 webpushは使用不可(ブラウザがサポートしていません)1は使用可 2権限が無効 3権限が確認されていません
msg:'success'
}
}
- WebPushオブジェクトのエラーコード:
| コード | メッセージ | 備考 |
|---|---|---|
| 0 | ブラウザが通知APIをサポートしていません | ブラウザが通知APIをサポートしていません |
| 1 | 通知の権限が利用可能で、メッセージの購読に成功しました。 | 通知の権限が利用可能で、メッセージの購読に成功しました。 |
| 2 | 通知の権限が無効化されており、メッセージの購読に失敗しました。 | 通知の権限が無効化されており、メッセージの購読に失敗しました。 |
| 3 | 通知の権限が確認されておらず、メッセージの購読が実行されていません。 | 通知の権限が確認されておらず、メッセージの購読が実行されていません。 |
| -1 | ブラウザがService Workerをサポートしていません。 | ブラウザがService Workerをサポートしていません。 |
| -2 | Service WorkerがHTTPをサポートしていません。 | Service WorkerがHTTPプロトコルをサポートしていません。 |
| -3 | Service Workerの登録に失敗しました。 | Service Workerの登録に失敗しました。 |
| -4 | 通知の権限は利用可能ですが、メッセージの購読に失敗しました。 | 通知の権限は利用可能ですが、メッセージの購読に失敗しました。 |
| -5 | 購読がキャンセルされました。 | 購読がキャンセルされました。 |
ブラウザ通知権限の取得
window.MTpushInterface.getWebPermission()
戻りパラメータの説明
- granted : 使用可
- denied : 無効
- default: 権限が確認されていません
カスタムメッセージデータのレポート
カスタムメッセージのデータ統計を行う必要がある場合は、カスタムレポートインターフェースを使用してデータをレポートしてください。
window.MTpushInterface.customClickReport('msg_id');//msg_idはカスタムメッセージのmsg_idです
切断監視
インターフェース説明
初期化が成功した後に切断が発生した場合、SDKは自動的に再接続と署名を試みます。 初期化の前にこのイベントリスナーを呼び出すことを推奨し、このイベントを受信した後に再度初期化を呼び出してください。
window.MTpushInterface.mtPush.onDisconnect(fn)
呼び出し例
window.MTpushInterface.mtPush.onDisconnect(function () {
});
ブラウザサブスクリプションのキャンセル
通知のサブスクリプションを解除します。一部のアカウントのプライバシーレベルが高い場合、アカウントをログアウトするときに通知を受信する必要がない場合にこのメソッドを使用できます。
MTpushInterface. unSubscribe();
TagsAliasの設定
window.MTpushInterface.setTagsAlias({})
MTpushInterface.setTagsAlias({ tags: ["test1", "test2"], alias: "aliass" });
パラメータ説明
| パラメータ名 | パラメータ型 | パラメータの説明 |
|---|---|---|
| tags | string[] | 必須、配列の最大長は1000、各要素の最大長は40文字 |
| alias | string | 必須、最大40文字 |
インターフェース説明
開発者はこのインターフェースを通じて特定のエイリアスの下にタグを設定および削除できます。このインターフェースはオーバーレイロジックです。通知が空の文字列に設定されている場合、既存のタグを削除できます。
カテゴリプロンプトの複数表示
window.MTpushInterface.promptPushCategories();
インターフェース説明
ユーザーがプッシュ通知をサブスクライブした後、開発者は必要に応じてカテゴリプロンプトを複数回表示できます。これはSDKの初期化後に呼び出す必要があります。
プッシュメッセージ表示コールバック
インターフェース説明
初期化の前にメッセージリスナーを呼び出すことを推奨します。
呼び出し例
window.MTpushInterface.onMsgDisplay((msgData) => {});
パラメータ説明
通知メッセージコールバックパラメータmsgDataの説明:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
engagelab_appkey: string;
engagelab_passwd: string;
engagelab_uid: string;
engagelab_url: string;
type: string; // 0: Engagelabチャネルメッセージ 1: システムチャネルメッセージ
}
アプリ内メッセージコールバックパラメータmsgDataの説明:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
type: string;
}
注:
アプリ内メッセージのHTML編集モードでは、コールバックパラメータ
titleとcontentは空の文字列です。Safariブラウザのシステムチャネルを介して配信されたメッセージは、表示コールバックを受信できません。
プッシュメッセージクリックコールバック
インターフェース説明
初期化の前にメッセージリスナーを呼び出すことを推奨します。
呼び出し例
window.MTpushInterface.onMsgClick((msgData) => {});
パラメータ説明
通知メッセージコールバックパラメータmsgDataの説明:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
engagelab_appkey: string;
engagelab_passwd: string;
engagelab_uid: string;
engagelab_url: string;
position: string; // クリック位置、'msgBody' | ボタンID
type: string; // 0: Engagelabチャネルメッセージ 1: システムチャネルメッセージ
}
アプリ内メッセージコールバックパラメータmsgDataの説明:
{
title: string;
content: string;
msg_id: string;
ntf_or_msg: number;
position: 'msgBody' | 'mainBtn' | 'subBtn' | 'closeBtn';
type: string;
}
注:
- アプリ内メッセージのHTML編集モードでは、
positionの値は開発者によって決定され、コールバックパラメータtitleとcontentは空の文字列です。- Safariブラウザのシステムチャネルを介して配信されたメッセージは、クリックコールバックを受信できません。
エラーコード
| コード | メッセージ | 備考 |
|---|---|---|
| 0 | success | 呼び出し成功 |
| 1000 | unknown error | 不明なエラー |
| 1001 | initing , please try again later | 初期化中、後で再試行してください |
| 1002 | invalid config | 初期設定エラー |
| 1003 | init failed | 初期化に失敗しました、詳細についてはコンソールの出力を参照してください |
| 1004 | init timeout | 初期化タイムアウト |
| 1005 | network error | ネットワークエラー、ネットワークがないかwebsocketに接続できません |
| 1006 | baseUrl と reportUrl の取得に失敗しました | get-webaddr API リクエストが失敗しました。詳細については、コールバック内の content フィールドを参照してください |
| 1007 | 認証に失敗しました | 認証に失敗しました。詳細については、コールバック内の content フィールドを参照してください |









