Unipush のオンラインおよびオフラインの例
DCLOUD デベロッパー センターで unipush アプリケーションを作成します。
Android パッケージ名を選択した後に Android アプリケーションの署名が自動的に生成されない場合、次の図のようになります。
この状況は、アプリケーション情報を編集せずにクラウド証明書を直接作成したことが原因である可能性が高くなります。
クラウド証明書をお持ちでない場合は、こちらをご覧ください。
[マイ アプリケーション] で、unipush を必要とするアプリケーションを見つけ、[編集] をクリックして、クラウド証明書の内容を入力します。
クラウド サービス スペースについては、指示に従ってください。これは私のせいではありません。リンク後、「有効化」をクリックします
hbuilder でプロジェクトを見つけてプロジェクト名を右クリックし、クラウド関数を作成します。
この手順は公式ドキュメントで詳しく説明されています。このステップは慎重に記述してください。そうすれば、バックエンドがインターフェイスをリクエストしたときにコールバックが行われます
プッシュ モジュールを追加し、targetSdkersion を設定します (targetSdkersion が高すぎるため、一部の電話では実行できません)
追加したプッシュモジュールを見つけて、クラウド機能を設定します(以下は私のコードのスクリーンショット、上記は公式のスクリーンショットなので、ファイル名は異なりますが、内容は同じです)
'use strict';
const uniPush = uniCloud.getPushManager({
appId: "__UNI__A4C6D3499"
})
exports.main = async (event) => {
let obj = JSON.parse(event.body)
const res = await uniPush.sendMessage({
"push_clientid": obj.cids, // 设备id,支持多个以数组的形式指定多个设备,如["cid-1","cid-2"],数组长度不大于1000
"title": obj.title, // 标题
"content": obj.content, // 内容
"payload": obj.data, // 数据
"force_notification": true, // 服务端推送 需要加这一句
"request_id": obj.request_id //请求唯一标识号,10-32位之间;如果request_id重复,会导致消息丢失
})
return res //一定要return回去
};
最終的なアップロードと展開
app.vue に次の 2 行のコードを記述します。1 つはプッシュ メッセージをクリックするイベントで、もう 1 つはユーザー CID 情報 (チャット情報など、指定されたユーザーにプッシュするために使用されます) を取得するものです。注文情報、すべて指定されたユーザー用)。次に、必ず最初にシステム権限を確認し、このボスのコードを直接コピーしてください。携帯電話によっては、初めてメッセージ通知を受信するかどうかを自動的に通知する機能がありますが、これは自分で対応させることができます。ベースをカスタマイズするには、この権限を手動でオンにする必要があります。 リンク アドレス
// #ifdef APP-PLUS
plus.push.addEventListener("click", function(msg) {
console.log(msg);
uni.switchTab({
url:'/pages/user/index'
})
}, false);
uni.getPushClientId({
success: res => {
console.log(res.cid);
}
})
this.getQuanxian()
// #endif
通知許可を取得する別の方法は公式ドキュメントです。
// #ifdef APP-PLUS
const notificationAuthorized = uni.getAppAuthorizeSetting().notificationAuthorized
if(notificationAuthorized=='denied'){
uni.showModal({
title: '提示',
content: '是否前往打开通知权限',
success: res => {
if (res.confirm) {
this.openTongZhi()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
}
// that.getQuanxian()
// #endif
次に、設定ファイルを確認します(オフラインで設定する場合は、最初にオフライン通知のタイトル部分を読んでください)
一部の携帯電話ではカスタム ベースを実行できません。これを 28 に設定してみてください。
カスタムベースパッケージを開いて実行します
その場合、パッケージはローカル デバッグ用のカスタム ベースである必要があります。
検出ベース
カスタム ドックを実行する前に、まず電話機内のすべての関連アプリケーションをアンインストールし、次に CID を取得してテストする必要があります。情報を取得できれば良いでしょう。
クラウド機能のURLを設定します(バックエンドのインターフェースを直接調整してプッシュする機能です)
このパラメータは 1 対 1 に対応しています。 ! !
デバイスはオンラインとオフラインの両方でこのインターフェイスを使用します。 ! !
オフラインのカスタム着信音
私がやったときはXiaomiはサポートしておらず、音を出すのは主にオフライン通知用でした。
カスタムプッシュ着信音とチャンネル - DCloud プラグイン マーケット
プラグインをインポートして使用します
チャンネルIDは
サウンドがなく、soundName が「」に設定されている場合でも、これをインポートし、システム着信音が存在する限り、そのまま受け入れます。
オフライン通知 (アプリをオンラインにする必要がある場合はこれをチェックしてください)
プロフィール検索
各メーカーのプラットフォームに直接アクセスします。上の画像に関する注記そこにはメーカーのアドレスがあります。検索メッセージ プッシュはアクティベートするだけで、ほとんどのプラットフォームで最初に起動できます。ファーウェイはオンラインにアクセスせずに直接申請できます。
Huawei と同様に、対応するフィールドを見つけて入力するだけです。
まとめと遭遇した落とし穴
0. dcloud では、unipush2.0 の作成時に Android パッケージ名が見つかりましたが、Android アプリケーションの署名は自動的に生成されませんでした。
クリックして変更および改善します
1. まず unipush2.0 をチェックしてオフライン プッシュを無効にし、次にテストのために app.vue で cid を取得します。次にクラウド機能を作成します。
2.カスタム ドックを実行できません:電話機上のすべての関連パッケージをアンインストールし、再度実行します。それ以外の場合は、targetSdkersion を低く設定する必要があります。
3.バックエンドがリクエストを送信しても応答がない、またはエラーが発生する:応答がない場合は、uniapp の構成に問題がある可能性があります。クラウド関数、または get リクエストまたはポストリクエストを行うことができますが、リクエストボディが異なります。その場合、クラウド関数が受け入れるパラメータとリクエストが送信されるパラメータは同じである必要があります
4.プッシュ メッセージを受信しませんでした:まず電話を確認してくださいメッセージ通知の許可 オンになっていますか? 次に、アプリを開いて uni.getPushClientId を通じて取得した cid を見つけ、dcloud で確認します
デバイスの状態を確認できるかどうかを確認します。オンラインで確認できない場合は、どの手順が間違っているかを確認するか、以前のアプリをアンインストールしてカスタム 基本パッケージを再インストールしてください。オフラインでもご確認いただけますが、メッセージが届かない場合はこちらをご確認ください
5. 設定ファイルなどを変更しても動作しなくなるため、電話機からアンインストールし、カスタムパッケージを再インストールします。
6. 一部の携帯電話では、オフラインでは音が聞こえません。各メーカーの構成は異なります。これについては、メーカーがアップデートしたときにテクニカル サポートに問い合わせてください。
7. GeTui の公式ドキュメントには、さまざまなメーカーを統合する方法 (主にオフライン プッシュ) が記載されています。 リンク アドレス
最後に: GeTui のテクニカル カスタマー サービスは非常にフレンドリーで、わからないことがあれば直接質問できます。