I.はじめに
仕事で関連する知識に触れることがあるので、この2日間でAurora Pushの使い方を学びました。また、学習の過程で多くの問題に遭遇したので、それらを簡単にまとめたいと思います。
では、なぜ Jiguang Push にアクセスする必要があるのでしょうか? この質問に対する簡単な答えは次のとおりです。その主な理由は、Aurora Push が実装するメッセージプッシュの適時性が比較的高く、ユーザーの携帯電話の時間と電力を節約できるためですが、プッシュサービスを自分で開発すると、単純な開発では時間と電力がかかる可能性があります。 「プッシュの実装はまだ比較的複雑です」というメッセージが表示されるため、問題が発生します。個人または小グループで使用する必要がある場合は、ホイールを構築する必要はないと思いますが、大規模なチームでも必要に応じて構築できると思います。
2. Android プロジェクトで (最も合理化された) Jiguang プッシュ ノートにすばやくアクセス
ここでの注意事項は公式文書から引用したものがほとんどですが、内容に相違がある場合は公式文書を参照してください。
必要な環境: Android Studio、登録済みの JiguangPush アカウント。
ステップ1
Android Studio でプロジェクトを作成し、パッケージ名が com.szu.weather であると仮定して、プロジェクトのパッケージ名を記録します。
ステップ2
JiguangPush 公式 Web サイトでアプリケーションを作成します。このプロセスではパッケージ名を使用する必要があります。わからない場合は、公式 Web サイトの詳細な手順を参照してください。アプリケーションが正常に作成されると、AppKey が g4u8ej62m7047000040aw5hd であると仮定して、AppKey を取得します。
ステップ3
モジュールの gradle を構成します。ここには入力する必要がある場所が 3 つあります。
①defaultConfigの中括弧を追加
ndk {
//选择要添加的对应 cpu 类型的 .so 库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
図に示すように (xxx.xxx ではなく、パッケージ名を図に忘れずに記入してください):
②ndkの後に追加(ここでは私のAppKeyではなく自分のAppKeyを入力する必要があります)
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "g4u8ej62m7047000040aw5hd",
JPUSH_CHANNEL : "developer-default",
]
追加後、図に示すように:
③依存関係の中括弧内に「cn.jiguang.sdk:jpush:5.0.3」を追加します。公式ドキュメントには、JCore パッケージはバージョン 5.0.0 から自動的にプルできると記載されているため、追加で JCore を設定する必要はありません。追加後、図に示すように:
③を完了すると、jar パッケージを介して Jiguang Push サードパーティ ライブラリをインポートする必要がなくなりました。
ステップ4
公式ドキュメントの推奨に従って、カスタム Service とカスタム Receiver を構成します。ただし、心配しないでください。これら 2 つのカスタム クラスはパブリックとして宣言する必要があります。そうしないとフラッシュバックの問題が発生します。不注意で public を追加しなかったのですが、この問題を解決するために、後でAndroid プロジェクト Unable to instantiate application, IllegalAccessException を実行することを知りました。
①Serviceはcn.jpush.android.service.JCommonServiceを継承する必要がありますが、最初は分からない場合は空のままで大丈夫です。例えば、
次に、AndroidManifest.xml ファイルに登録する必要があります。
②受信側はcn.jpush.android.service.JPushMessageReceiverを継承する必要があります。このクラスは上記の Service に似ており、最初は理解できない場合は空のままにしても問題ありません。例えば、
import cn.jpush.android.service.JPushMessageReceiver;
public class DemoReceiver extends JPushMessageReceiver {
}
しかし実際には、このクラスは特定のプッシュ メッセージを受信するためのものであり、このクラスの Bundle を使用してプロモーションを分析し、再利用することができます。
同様に、AndroidManifest.xml ファイルでもレシーバーを登録する必要があります。
ステップ5
アプリケーション クラスを作成し、android.app.Application から継承して、onCreate メソッドでプッシュ サービスを初期化します。
import android.app.Application;
import android.content.Context;
import cn.jiguang.api.utils.JCollectionAuth;
import cn.jpush.android.api.JPushInterface;
public class XXXApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
JPushInterface.setDebugMode(true);
Context context = this;
JPushInterface.init(context);
JCollectionAuth.setAuth(context, true); //如初始化被拦截过,将重试初始化过程
}
}
このクラスは AndroidManifest.xml ファイルにも登録する必要があります
ステップ6
AndroidManifest.xml ファイルで基本的な権限を宣言する必要があると公式は述べています
<!-- 记得修改相应的包名(共有两处需要修改) -->
<permission android:name="com.szu.weather.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.szu.weather.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
ステップ7
MainActivity で忘れずに許可をリクエストしてください。
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.os.Build;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions();
}
private void requestPermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
}
}
}
合計 4 つのクラスが関係します (コード行数は 50 行以内と推定されます)。
図に示すように、作成した APP をコンパイルして実行し、権限を付与し、インターフェイスを表示し、通知バーを表示します。
ステップ8
Jiguang Push プラットフォームをプッシュし、[プレビューの送信]、[送信の確認] の順にクリックします。
ステップ9
図に示すように、モバイル APP 上のプッシュを確認します (プッシュをクリックすると消えます。Receiver クラスに設定していないため、他のアクションはありません)。
3. 参考文献
1. Android クイック アクセス - Jiguang ドキュメント
4. 結論
最後に一言。サードパーティのライブラリについては、設定と使用方法について公式ドキュメントを直接確認することをお勧めします。他の人のブログを読むと、私のブログを含め、多くの落とし穴に遭遇する可能性があります。技術ブログは通常、時間に左右されます。穴を踏んでも怒らないでください。サードパーティのライブラリと比較して、繰り返し更新されています。過去数年間のブログが適用できないのは普通のことです。もっと公式文書を読んでください、覚えておいてください!