小米推送简单使用方法

公司项目需要做推送,我们选择用小米推送,经过一段时间的摸索,终于可以简单的使用小米推送了。

1.创建账号登入后 登入后选择消息推送:


2.进入后创建项目,按照步骤创建完后如下


3.后台配置完了,我们再配置代码,第一次使用小米推送 我下了个Demo再把里面有用的复制到自己项目中:

先把jar包复制到自己项目中


首先在继承了Application的类中放入

 private static final String APP_ID = "2882303761517483058";
    // user your appid the key.
    private static final String APP_KEY = "5951748376058";

    // 此TAG在adb logcat中检索自己所需要的信息, 只需在命令行终端输入 adb logcat | grep
    // com.xiaomi.mipushdemo
    public static final String TAG = "com.dodonew.epapp";
Id 和key什么的都是在小米开放平台创建项目获得的

再在Appliction的oncreate()方法中加入:

 if (shouldInit()) {
	            MiPushClient.registerPush(this, APP_ID, APP_KEY);
	        }
		  LoggerInterface newLogger = new LoggerInterface() {

	            @Override
	            public void setTag(String tag) {
	                // ignore
	            }

	            @Override
	            public void log(String content, Throwable t) {
	                Log.d(TAG, content, t);
	            }

	            @Override
	            public void log(String content) {
	                Log.d(TAG, content);
	            }
	        };
	        Logger.setLogger(this, newLogger);
	        if (sHandler == null) {
	            sHandler = new DemoHandler(getApplicationContext());
	        }
其中shouldInit()和Handler:
private boolean shouldInit() {  
        ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));  
        List<RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();  
        String mainProcessName = getPackageName();  
        int myPid = Process.myPid();  
        for (RunningAppProcessInfo info : processInfos) {  
            if (info.pid == myPid && mainProcessName.equals(info.processName)) {  
                return true;  
            }  
        }  
        return false;  
    }  

    public static DemoHandler getHandler() {
        return sHandler;
    }
    public static class DemoHandler extends Handler {

        private Context context;

        public DemoHandler(Context context) {
            this.context = context;
        }

        @Override
        public void handleMessage(Message msg) {
            String s = (String) msg.obj;
            if (sMainActivity != null) {
                sMainActivity.refreshLogInfo();
            }
            if (!TextUtils.isEmpty(s)) {
               // Toast.makeText(context, s, Toast.LENGTH_LONG).show();
            }
        }
    }
说实话Demohander其实没什么用,主要是弹出toast提示而已,我不喜欢 于是隐藏了toast

其中MainActivity中的refreshLogInfo()方法:

 public void refreshLogInfo() {
        String AllLog = "";
        for (String log : logList) {
            AllLog = AllLog + log + "\n\n";
        }
       System.out.println("mainActivity中消息推送::::::::"+AllLog);
    }
然后 我们要把Demo中的一个广播类复制过来 ,由于内容一样我就不复制了 

其中有个方法很重要: onNotificationMessageClicked(Context context, MiPushMessage message)

这个方法的作用是:当有消息推送到你手机上时 你在通知栏点击这个消息时,就能在这个方法中通过message获取 消息的内容。

第二 加入你想点击通知栏中的消息 跳转到你app中指定的界面 也在这个方法中执行 只需要添加一段代码即可:

Intent intent = new Intent(context, 指定的Activity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);


最后 我们要去配置AndroidManifest.xml
一些权限我就不放了 和以前的权限放一起了不好区分,可以去Demo中找

在权限下面放

  <permission
        android:name="com.dodonew.epapp.permission.MIPUSH_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.dodonew.epapp.permission.MIPUSH_RECEIVE" />
    <uses-permission android:name="android.permission.VIBRATE" />
在<Appliction/>中添加
  <service
            android:name="com.xiaomi.push.service.XMJobService"
            android:enabled="true"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE"
            android:process=":pushservice" />

        <service
            android:name="com.xiaomi.push.service.XMPushService"
            android:enabled="true"
            android:process=":pushservice" />

        <service
            android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
            android:enabled="true"
            android:exported="true" />
        <service
            android:name="com.xiaomi.mipush.sdk.MessageHandleService"
            android:enabled="true" />

        <receiver
            android:name="com.dodonew.epapp.control.receiver.XiaoMiMessageReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.xiaomi.mipush.ERROR" />
            </intent-filter>
        </receiver>
        <receiver
            android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        <receiver
            android:name="com.xiaomi.push.service.receivers.PingReceiver"
            android:exported="false"
            android:process=":pushservice">
            <intent-filter>
                <action android:name="com.xiaomi.push.PING_TIMER" />
            </intent-filter>
        </receiver>
就可以了



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要进行小米推送的测试,可以按照以下步骤进行操作: 1. 首先,加载小米推送SDK。可以使用以下代码加载SDK: ``` include_once(dirname(__FILE__) . '/../XiaoMiSdk/autoload.php'); ``` 2. 在代码中添加必要的引用。可以使用以下代码添加引用: ``` use xmpush\Builder; use xmpush\Constants; use xmpush\Sender; ``` 3. 设置常量。在调用`new Sender()`方法之前,需要设置一些常量。可以使用以下代码设置常量: ``` $secret = self::$config\['AppSecret'\]; $package = self::$config\['package'\]; Constants::setPackage($package); Constants::setSecret($secret); ``` 4. 创建消息对象并设置相关参数。可以使用以下代码创建消息对象并设置相关参数: ``` $sender = new Sender(); $message1 = new Builder(); $message1->title($data\['title'\]); // 通知栏的标题 $message1->description($data\['description'\]); // 通知栏的说明 $message1->passThrough($data\['passThrough'\]??0); // 是否透传消息 $message1->payload($data\['payload'\]); // 携带的数据 $message1->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知 $message1->notifyId($data\['notifyId'\]??2); // 通知类型 $message1->build(); ``` 5. 发送推送消息。根据需要,可以选择单推或多推。如果`$data\['regId'\]`是一个字符串,则进行单推;如果`$data\['regId'\]`是一个数组,则进行多推。可以使用以下代码发送推送消息: ``` if(is_array($data\['regId'\])){ return $sender->sendToIds($message1, $data\['regId'\])->getRaw(); } else { return $sender->send($message1, $data\['regId'\])->getRaw(); } ``` 6. 进行测试。可以使用以下代码进行测试: ``` $data = \[ 'title' => '两只母老虎', // 标题 'description' => '两只母老虎', // 说明 'payload' => '', // 发送的消息内容 'regId' => '' // 指定设备regId,传一个字符串进行单推,传数组进行多推 \]; $class::push($data); ``` 请根据实际情况修改代码中的参数,并确保已正确配置小米推送的相关信息。 #### 引用[.reference_title] - *1* *2* *3* [Laravel 小米推送](https://blog.csdn.net/qq_877128013/article/details/125282088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值