浅谈 Uniapp 推送–原生插件

同一个地方,换了条短裤,抖音上还有发每日 ootd 的主播,主打每日不重样,不过我是没那么多穿搭啊,肯定会重复的。嘻嘻。最近抖音一直给我推一个品牌的丝袜,主打是防晒+无裆缝设计。

于是呢,在看了数天广告之后终于买了,79.9 三条,对我来说这个价格并不算便宜,尤其是对于丝袜这种消耗品来说。

言归正传,这是关于 unipush的第三篇文章,第一篇文章写过关于推送之安卓桌面图标角标的问题。

Uniapp 原生插件开发

本质上,这篇文章算是对上篇文章的延续。主要说一下安卓系统上如何设置桌面角标,对于 ios 系统相对来说比较简单,直接调用uni 的

plus.runtime.setBadgeNumber(count);
plus.runtime.setBadgeNumber(count);

即可实现。

对于安卓系统,在上篇文章中也提过,本质上是对各种安卓的桌面 launcher 的适配。如果搜索一下,也能找到一些相关的文档。同样,在 uni 的官方插件市场内可以找到一个设置角标的原生插件:

插件售价 19.9,我并没有购买这个插件,一个是不知道效果具体如何,另外一个原因是如果说插件支持性不好,那最后还得自己去实现相关功能。

不过插件是支持使用的,点击试用 之后即可修改 manifest 选择云端插件打自定义基座包进行测试:

这不是本文的重点,所以就不细说了。不过不知道是不是大家对于推送角标问题都已经解决了还是觉得这么简单的问题不值得说,网上搜一下关于 uniapp 的 unipush 角标问题搜索结果寥寥无几,要不搜素到的文章就都是废话,听君一些话,胜似一席话,也可能是自己搜索的方式不对。

要实现角标设置,最直接的几个办法:

1.找现成的代码,或者安卓相关的文档;

2.逆向大厂的 app,比如微信、qq 之类的。

当然最简单的还是第一个办法,毕竟逆向分析的代码,写起来也有些麻烦。当然上面的前提是,还是基于原生插件去做,直接 uni 是解决不了的。

很幸运的找到了几份代码以及一些相关的文档:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
https://blog.csdn.net/weixin_48488560/article/details/130420568 代码见下面第一条链接
https://gitee.com/hzuqbt/badge-number (works)
https://github.com/hacket/LauncherBadge (not work)
https://www.cnblogs.com/slmk/p/8822112.html
https://segmentfault.com/a/1190000024553355
https://blog.csdn.net/weixin_48488560/article/details/130420568 代码见下面第一条链接 https://gitee.com/hzuqbt/badge-number (works) https://github.com/hacket/LauncherBadge (not work) https://www.cnblogs.com/slmk/p/8822112.html https://segmentfault.com/a/1190000024553355
https://blog.csdn.net/weixin_48488560/article/details/130420568  代码见下面第一条链接  
https://gitee.com/hzuqbt/badge-number  (works)  
https://github.com/hacket/LauncherBadge  (not work)  
https://www.cnblogs.com/slmk/p/8822112.html  
https://segmentfault.com/a/1190000024553355

针对https://gitee.com/hzuqbt/badge-number这份代码来说,相关的功能实现还算是比较清晰的。

这份代码在设置badge count 的时候,同时调用了下面的方法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public void setNotification(Context context, int number, String title, String desc)
public void setNotification(Context context, int number, String title, String desc)
public void setNotification(Context context, int number, String title, String desc)

这样会创建一条本地通知,在实际转成原生插件的时候可以去掉,无需创建本地通知。

另外,直接跑这份代码直跑不通的的会提示没有权限,需要在 manifest 中添加权限申请:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
<uses-permission android:name="com.android.launcher2.permission.READ_SETTINGS"/>
<uses-permission android:name="com.android.launcher2.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS"/>
<uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS"/>
<uses-permission android:name="org.adw.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="org.adw.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.htc.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.qihoo360.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.qihoo360.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.lge.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.lge.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="net.qihoo.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="net.qihoo.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="org.adwfreak.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="org.adwfreak.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="org.adw.launcher_donut.permission.READ_SETTINGS"/>
<uses-permission android:name="org.adw.launcher_donut.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.huawei.launcher3.permission.READ_SETTINGS"/>
<uses-permission android:name="com.huawei.launcher3.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.fede.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.fede.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.sec.android.app.twlauncher.settings.READ_SETTINGS"/>
<uses-permission android:name="com.sec.android.app.twlauncher.settings.WRITE_SETTINGS"/>
<uses-permission android:name="com.anddoes.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.anddoes.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.tencent.qqlauncher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.tencent.qqlauncher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.huawei.launcher2.permission.READ_SETTINGS"/>
<uses-permission android:name="com.huawei.launcher2.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.android.mylauncher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.android.mylauncher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.ebproductions.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.ebproductions.android.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.lenovo.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.lenovo.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="telecom.mdesk.permission.READ_SETTINGS"/>
<uses-permission android:name="telecom.mdesk.permission.WRITE_SETTINGS"/>
<uses-permission android:name="dianxin.permission.ACCESS_LAUNCHER_DATA"/>
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/> <uses-permission android:name="com.android.launcher2.permission.READ_SETTINGS"/> <uses-permission android:name="com.android.launcher2.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS"/> <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS"/> <uses-permission android:name="org.adw.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="org.adw.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.htc.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.qihoo360.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.qihoo360.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.lge.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.lge.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="net.qihoo.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="net.qihoo.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="org.adwfreak.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="org.adwfreak.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="org.adw.launcher_donut.permission.READ_SETTINGS"/> <uses-permission android:name="org.adw.launcher_donut.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.huawei.launcher3.permission.READ_SETTINGS"/> <uses-permission android:name="com.huawei.launcher3.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.fede.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.fede.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.sec.android.app.twlauncher.settings.READ_SETTINGS"/> <uses-permission android:name="com.sec.android.app.twlauncher.settings.WRITE_SETTINGS"/> <uses-permission android:name="com.anddoes.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.anddoes.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.tencent.qqlauncher.permission.READ_SETTINGS"/> <uses-permission android:name="com.tencent.qqlauncher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.huawei.launcher2.permission.READ_SETTINGS"/> <uses-permission android:name="com.huawei.launcher2.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.android.mylauncher.permission.READ_SETTINGS"/> <uses-permission android:name="com.android.mylauncher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.ebproductions.android.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.ebproductions.android.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.lenovo.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.lenovo.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/> <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="telecom.mdesk.permission.READ_SETTINGS"/> <uses-permission android:name="telecom.mdesk.permission.WRITE_SETTINGS"/> <uses-permission android:name="dianxin.permission.ACCESS_LAUNCHER_DATA"/> <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
    <uses-permission android:name="com.android.launcher2.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.android.launcher2.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="org.adw.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="org.adw.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.htc.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.qihoo360.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.qihoo360.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.lge.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.lge.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="net.qihoo.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="net.qihoo.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="org.adwfreak.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="org.adwfreak.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="org.adw.launcher_donut.permission.READ_SETTINGS"/>
    <uses-permission android:name="org.adw.launcher_donut.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.huawei.launcher3.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.huawei.launcher3.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.fede.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.fede.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.sec.android.app.twlauncher.settings.READ_SETTINGS"/>
    <uses-permission android:name="com.sec.android.app.twlauncher.settings.WRITE_SETTINGS"/>
    <uses-permission android:name="com.anddoes.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.anddoes.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.tencent.qqlauncher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.tencent.qqlauncher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.huawei.launcher2.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.huawei.launcher2.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.android.mylauncher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.android.mylauncher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.ebproductions.android.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.ebproductions.android.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.lenovo.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.lenovo.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="telecom.mdesk.permission.READ_SETTINGS"/>
    <uses-permission android:name="telecom.mdesk.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="dianxin.permission.ACCESS_LAUNCHER_DATA"/>
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>

在实际调试的时候建议还是直接 apk 打包调试,一切功能正常之后再往原生插件进行移植。不然直接调试原生插件比调试 apk 要麻烦多了,在调试的过程中一度有了放弃的想法,想着实在不行就用那个 19 块钱的插件了。不过好在后来还是解决问题了,整体而言,就是整合代码添加权限,然后就 ok 了。

在 uni 中分别进行处理就 ok 了:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
setBadgeCount(count) {
// #ifdef APP
if (plus.os.name == "Android") {
const babyBadgeModule = uni.requireNativePlugin('babyBadgeModule');
// console.log(babyBadgeModule)
babyBadgeModule.setLauncherBadgeCount({
COUNT: count
}, result => {});
} else {
plus.runtime.setBadgeNumber(count);
}
// #endif
},
setBadgeCount(count) { // #ifdef APP if (plus.os.name == "Android") { const babyBadgeModule = uni.requireNativePlugin('babyBadgeModule'); // console.log(babyBadgeModule) babyBadgeModule.setLauncherBadgeCount({ COUNT: count }, result => {}); } else { plus.runtime.setBadgeNumber(count); } // #endif },
setBadgeCount(count) {
                // #ifdef APP
                if (plus.os.name == "Android") {
                    const babyBadgeModule = uni.requireNativePlugin('babyBadgeModule');
                    // console.log(babyBadgeModule)
                    babyBadgeModule.setLauncherBadgeCount({
                        COUNT: count
                    }, result => {});
                } else {
                    plus.runtime.setBadgeNumber(count);
                }
                // #endif

            },

 

不过这次更新要做的内容比较多,发版就等端午之后再说吧。

☆版权☆

* 网站名称:obaby@mars
* 网址:https://lang.ma/
* 个性:https://oba.by/
* 本文标题: 《浅谈 Uniapp 推送–原生插件》
* 本文链接:https://lang.ma/2024/06/17264
* 短链接:https://oba.by/?p=17264
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

33 comments

  1. Level 6
    Microsoft Edge 125 Microsoft Edge 125 Windows 11 Windows 11 us美国–加利福尼亚州–洛杉矶–洛杉矶

    沙发,还出续集了
    坐观蓝色小裤裤+丝袜

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      这个破玩意儿,要是想写,还能写 laugh

  2.  Level 6
    Microsoft Edge 125 Microsoft Edge 125 GNU/Linux GNU/Linux cn中国–广东–珠海 电信

    uniapp这个原生的好用,如果是我,我不懂的时候,只能用css自己写了

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      有的功能必须得原生插件搞,靠 uni 是搞不动的

  3. Level 4
    Safari 17 Safari 17 Mac OS X 10.15 Mac OS X 10.15 cn中国–贵州–贵阳 移动

    咦,这是续集吗??
    是推荐丝袜呢?还是推荐你的app😂

        1. 公主 Queen 
          Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

          收益?神马收益?
          你要来跟我分担服务器费用吗? dance
          目前为止都是投入,我连广告模块都没加。哈哈哈

          1. Level 4
            Mozilla Compatible Mozilla Compatible iPhone iOS 17.4.1 iPhone iOS 17.4.1 cn中国–贵州–贵阳 移动

            我还以为收益不错 😂
            神马?和你分担服务器费用?不敢不敢,你把机柜都搬回家了……承受不住了 哈

  4.   Level 7
    Google Chrome 125 Google Chrome 125 Mac OS X 10.15 Mac OS X 10.15 cn中国–浙江–杭州 华数

    丝袜和防晒两个词语放在一起就很违和,这是硬找了一条赛道啊。

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      你看,人家这个就很专业。
      硬生生的给结合到一块去了。哈哈

      1.   Level 7
        Safari 17 Safari 17 iPhone iOS 17.4.1 iPhone iOS 17.4.1 cn中国–浙江–杭州 移动

        在我的期望中,丝袜要么耐磨——悦己,要么易撕——悦人。防晒是个拐弯都想不着的需求。

        1. 公主 Queen 
          Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

          现在还有另外一种,面膜丝袜,反正是各种新颖的东西。
          对于你期望的两种,我还是觉得耐磨更实用。主要是不脱丝,随意剪,不过多数丝袜宣传这个,都达不到这个效果,一旦勾丝之后还是一条条的,就很讨厌。

  5.  Level 6
    Google Chrome 125 Google Chrome 125 Windows 10 Windows 10 cn中国–北京–北京 联通

    你这个层次的技术,我一丁点都看不懂,多出些教材教教我们

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      价格其实不是关键,不开源的东西出了问题修复是个问题。

  6. Level 5
    Google Chrome 125 Google Chrome 125 Windows 11 Windows 11 cn中国–湖北–武汉 联通

    自从用了 uniapp 之后,腿不酸了,腰不疼了,一口气爬五楼不费劲了。

    哈哈Uni这么神奇吗 laugh

    1. 公主 Queen 
      Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      额,让你说对了。果然拼夕夕更便宜啊,49.9 三条。果然不能在抖音买东西

      1. Level 6
        Wordpress App 24 Wordpress App 24 iPhone iOS 17.5.1 iPhone iOS 17.5.1 cn中国–安徽–合肥–肥西县 电信

        所以现在抖音直播,跟我们以前的电视购物一个样。

        1. 公主 Queen 
          Google Chrome 118 Google Chrome 118 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

          嗯嗯,之前看的一个剃毛的,感觉还可以。后来上京东一看,结果比抖音折扣完还便宜。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注