Intégrez Jpush dans Android pour réaliser une notification de message push et envoyer selon la désignation de l'alias. Exemple de code à télécharger en pièce jointe

Scènes

Il existe souvent des services d'arrière-plan qui transmettent des notifications à Android.

atteindre

Créez d'abord une nouvelle application Android dans Android Studio

Jcenter est configuré dans le build.gradle du répertoire racine du projet et le support est configuré par défaut

 

Ajoutez ensuite les dépendances pertinentes dans le build.gradle de l'application sous le module

    implementation 'cn.jiguang.sdk:jpush:3.3.4'  // 此处以JPush 3.3.4 版本为例。
    implementation 'cn.jiguang.sdk:jcore:2.1.0'  // 此处以JCore 2.1.0 版本为例。

Ajoutez l'emplacement comme suit

 

Remplacez ensuite les variables dans le manifeste

    defaultConfig {
        applicationId "com.badao.pushdemo"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"


        ndk {
            //选择要添加的对应cpu类型的.so库。
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                JPUSH_APPKEY : "Push上注册的包名对应的appkey", //JPush上注册的包名对应的appkey.
                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
        ]

    }

Lieu de remplacement

 

Faites attention à deux endroits ici:

applicationId est le même nom de package lorsque vous créez une nouvelle application sur la plate-forme de développement Jiguang.

Ensuite, la JPUSH_APPKEY ci-dessous est la clé d'application correspondante de l'application nouvellement créée

Ensuite, ouvrez le fichier AndroidManifest.xml du projet pour ajouter des autorisations

    <!-- Required -->
    <permission
        android:name="com.badao.pushdemo.permission.JPUSH_MESSAGE"
        android:protectionLevel="signature" />

    <!-- Required -->
    <uses-permission android:name="com.badao.pushdemo.permission.JPUSH_MESSAGE" />
    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!-- Optional. Required for location feature -->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在 6.0 系统上的层叠窗口权限 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.VIBRATE" />

Notez que le nom du package devant la première autorisation ici doit être le même

Enregistrez ensuite un autre service qui hérite de JCommonService dans AndroidManifest.xml

        <!-- 注册继承JCommonService的服务 -->
        <service
            android:name=".PushService"
            android:enabled="true"
            android:exported="false"
            android:process=":pushcore">
            <intent-filter>
                <action android:name="cn.jiguang.user.service.action" />
            </intent-filter>
        </service>

Ensuite, créez un nouveau PushService sous le chemin du package

 

code montrer comme ci-dessous

package com.badao.pushdemo;

import cn.jpush.android.service.JCommonService;

public class PushService extends JCommonService {
}

Ensuite, personnalisez un récepteur dans AndroidManifest.xml pour remplacer le récepteur push Jiguang natif

        <!-- 替换原生极光推送接收器 -->
        <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
                <category android:name="com.badao.pushdemo" /> <!--JPush上注册的包名 -->
            </intent-filter>
        </receiver>

Notez que le nom du package ici est le même que celui enregistré sur JPush

Ensuite, créez un nouveau MyReceiver sous le chemin du package

 

Modifiez le code comme suit

package com.badao.pushdemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;

public class MyReceiver extends JPushMessageReceiver {

    private static final String TAG = "JIGUANG";
    private Intent intent;

    @Override
    public void onConnected(Context context, boolean b) {
        super.onConnected(context, b);
        Log.e(TAG, "onConnected");
    }

    @Override
    public void onRegister(Context context, String s) {
        super.onRegister(context, s);
        Log.e(TAG, "onRegister" + s);
    }

    @Override
    public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
        Log.i("bieming","bieming:"+jPushMessage.getAlias());
        super.onAliasOperatorResult(context, jPushMessage);
        Log.e(TAG, jPushMessage.toString());
    }

    /**
     * 可以利用附加字段(notificationMessage.notificationExtras)来区别Notication,指定不同的动作,附加字段是个json字符串
     * 通知(Notification),指在手机的通知栏(状态栏)上会显示的一条通知信息
     */
    @Override
    public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
        super.onNotifyMessageArrived(context, notificationMessage);
        Log.e(TAG, notificationMessage.toString());
    }

    /**
     * notificationMessage.notificationExtras(附加字段)的内容处理代码
     * 比如打开新的Activity, 打开一个网页等..
     */
    @Override
    public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
        super.onNotifyMessageOpened(context, notificationMessage);
        Log.e(TAG, notificationMessage.notificationExtras);

        Intent intent = new Intent(context, MainActivity.class);
        context.startActivity(intent);
    }


    /**
     * 自定义消息不是通知,默认不会被SDK展示到通知栏上,极光推送仅负责透传给SDK。其内容和展示形式完全由开发者自己定义。
     * 自定义消息主要用于应用的内部业务逻辑和特殊展示需求
     */
    @Override
    public void onMessage(Context context, CustomMessage customMessage) {
        super.onMessage(context, customMessage);
        Log.e(TAG, "onMessage");
    }
}

Remplacez certaines méthodes dans le récepteur personnalisé pour implémenter les rappels associés

Puis initialisez Jpush dans MainActivity

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化极光推送
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);

        if (!isNotificationEnabled(this)) {
            gotoSet();//去设置开启通知
        } else {
            //当前app允许消息通知
        }
    }

Ensuite, déterminez si vous souhaitez activer la notification ultérieurement, où

    //是否允许通知
    private boolean isNotificationEnabled (Context context){
        boolean isOpened = false;
        try {
            isOpened = NotificationManagerCompat.from(context).areNotificationsEnabled();
        } catch (Exception e) {
            e.printStackTrace();
            isOpened = false;
        }
        return isOpened;

    }

ensuite

    //去设置允许通知
    private void gotoSet () {
        Intent intent = new Intent();
        if (Build.VERSION.SDK_INT >= 26) {
            // android 8.0引导
            intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
            intent.putExtra("android.provider.extra.APP_PACKAGE", getPackageName());
        } else if (Build.VERSION.SDK_INT >= 21) {
            // android 5.0-7.0
            intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
            intent.putExtra("app_package", getPackageName());
            intent.putExtra("app_uid", getApplicationInfo().uid);
        } else {
            // 其他
            intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
            intent.setData(Uri.fromParts("package", getPackageName(), null));
        }
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

Ensuite, exécutez le projet, connectez-vous à la plateforme de développement Jiguang pour trouver le message push

Le principe est d'effectuer les opérations suivantes

Trouvez le service développeur sur le site officiel de Jpush et entrez dans la plateforme développeur

Cliquez ensuite sur créer une application

 

Définissez un nom de package lors de la création d'une nouvelle application, rappelez-vous que ce nom de package sera utilisé dans le code

Ensuite, sélectionnez le service push

 

Cliquez sur Suivant, puis vous pouvez sélectionner le canal de fournisseur à intégrer

 

Choisissez d'intégrer Android

 

Ensuite, le responsable fournit une documentation intégrée, des téléchargements et des démos du SDK. Lorsque nous intégrons dans Android, nous pouvons intégrer des dépendances via jcenter. Une fois la nouvelle application terminée

Copiez le nom du package d'application et AppKey,

 

Le groupe cible choisit tout le monde

 

Vous recevrez un push dans l'application

 

Passer à travers le périphérique désigné par paramètre d'alias

Ce qui précède consiste à pousser tous les périphériques, si vous devez pousser vers le périphérique spécifié

Cela peut être réalisé en définissant l'alias de l'appareil.

Faites attention à la différence avec l'étiquette, l'étiquette est un type d'appareil et l'alias est l'appareil désigné

Ajoutez d'abord deux boutons sur la page principale

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册别名"
        tools:layout_editor_absoluteX="210dp"
        tools:layout_editor_absoluteY="462dp" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="解除注册别名"
        tools:layout_editor_absoluteX="210dp"
        tools:layout_editor_absoluteY="462dp"
        android:layout_below="@id/button1"/>

</RelativeLayout>

Ensuite, définissez l'événement de clic dans onCreate dans MainActivity pour définir l'alias et supprimer l'alias respectivement.

        //设置别名-一般在登录时
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                JPushInterface.setAlias(getApplicationContext(),0000000001,"badaodechengxvyuan");
                Log.i("setAlias","setAlias");
            }
        });

        //删除别名一般在注销登录时
        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                JPushInterface.deleteAlias(getApplicationContext(),0000000001);
                Log.i("deleteAlias","deleteAlias");
            }
        });

L'alias est généralement défini lorsque l'application est connectée

 

Ensuite, supprimez l'alias généralement après la déconnexion et la connexion. Ici, la définition de l'alias et la suppression de l'alias sont implémentées à l'aide d'événements de bouton.

 

Ensuite, démarrez le projet et cliquez sur le bouton Enregistrer un alias.

En outre, onAliasOperatorResult dans le récepteur personnalisé peut implémenter des rappels pour l'enregistrement et la suppression d'alias.

Ensuite, connectez-vous à l'arrière-plan du développeur Jiguang et définissez l'alias de périphérique dans la sélection cible dans le message push

 

Ensuite, vous recevrez le push dans l'appareil d'application spécifié

 

Ensuite, vous pouvez voir dans le journal que vous avez entré le rappel du paramètre d'alias

 

Ensuite, cliquez à nouveau sur le bouton d'enregistrement de suppression d'alias, le message push ne sera pas reçu sur l'appareil et il sera invité en arrière-plan de Jiguang Developer

 

Puis également sortie dans la méthode de rappel

 

Téléchargement d'un exemple de code

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/15435342

Je suppose que tu aimes

Origine blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114016288
conseillé
Classement