本文阅读时间约:5~7 分钟 ; 关键词: Mojo-Webqq

请注意,本文在 Ubuntu 16.04 x64 上测试通过,其他 OS 请自测。

有时候,你不得不承认,国产软件在某些方面有着恐怖的实力,比如想尽一切办法在后台常驻,保留服务,总之就是想尽办法“获得你的注意”一来二去的你的手机电量就会是「直接受害者」了,有没有什么办法能让它们在不常驻后台/服务的前提下还能很好的完成本职工作呢?今天我们来介绍一个工具,它在原生 Android 用户口中十分有名,它就是 Mojo-Webqq 。

什么是 Mojo-Webqq ?

根据作者在 Github 上所述:

使用 Perl 语言编写的 Smartqq 客户端框架,基于 Mojolicious ,要求 Perl 版本 5.10+ ,可通过插件提供基于 HTTP 协议的 api 接口供其他语言或系统调用.

谁也看不懂对么,我个人的见解是 : Mojo-Webqq 就是使用一个更加轻量省电的工具来替代 QQ 臃肿的通知系统。
它使用 Mojo-Webqq 当作服务端获取信息,通过 GCM 等推送方式推送到你的手机上来达到「更轻量」解决 QQ 通知的问题

准备工作

  • 一部 VPS 服务器,或者一部 Android 手机,安卓手机可能需要安装 LinuxDeploy 应用来继续操作,关于 Android 手机部署 LinuxDeploy 的方法我会单独介绍。
  • 如要使用 GCM 推送,所选的服务器可能还会需要拥有能访问 Google 的能力。
  • 一个 SSH 管理软件,Windows下推荐使用 PUTTY,OSX 下可以使用自带的终端机(Terminal)功能。

开始连接

首先我们先来连接到 SSH ,如果是 Windows 则可以使用 PUTTY 的连接功能,PUTTY 的登录窗口如图所示

PUTTY 登录界面
PUTTY 登录界面

在 1 处输入服务器的 IP 地址,选择 SSH 连接即可,IP 地址的查看请咨询您的 IDC 。OSX 的登录方式是在终端机中输入

 ssh root@your ip address 

如果登陆成功。 PUTTY / Terminal 则会以命令行形式展示

登陆成功
登陆成功

环境准备

要使用 Mojo-Webqq ,我们需要一些环境的支持,现在我们来安装开发工具

sudo apt-get install build-essential

提示是否安装时我们选择 Y 进行确认

确认安装
确认安装

安装完开发工具之后我们再来安装一些必要的小工具,值得一提的是有的工具在您使用的 VPS 之下是默认安装的,这种情况下您真实被安装的项目可能会为零个,这是正常现象,安装指令为

apt-get install vim git perl make gcc g++

接下来我们继续安装 openssl-devel,安装指令为

sudo apt-get install openssl
sudo apt-get install libssl-dev

由于 Ubuntu 安装任意模块时都会先把 cpan 装上,所以我们直接执行 cpan 模块的安装指令:

 cpan -i App::cpanminus

随后服务器开始执行安装指令

cpan 安装中
cpan 安装中

安装完成后会返回如下提示

cpan 安装完成
cpan 安装完成

cpan 安装完成之后,就可以开始正式安装 Mojo-Webqq了。

正式安装

Mojo-Webqq 提供了 cpan 一行命令安装方法,具体是:

cpanm Mojo::Webqq

安装完成后的返回结果如下

Mojo-Webqq 安装完成
Mojo-Webqq 安装完成

Mojo-Wexin 的安装方式大致相同,即 cpanm Mojo::Weixin

故障排除

如果因为网络环境而导致安装中断,一般情况下是 Mojolicious 未成功安装造成的,则我们可以手动安装它

 curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious

安装成功后重新运行下面的安装命令即可

cpanm Mojo::Webqq

应用设定

新建一个 Pl 文件来设定

touch Webqq.pl

然后使用 vim 或者 nano 来编辑,这里我们使用 vim

vi Webqq.pl

然后我们给出一个模板,将下面的文本粘贴进刚刚打开的 vim 编辑器里面

use Mojo::Webqq;
#微信使用 use Mojo::Weixin
my $client = Mojo::Webqq->new(log_encoding=>"utf-8");
$client->load("ShowMsg");
#请根据自己所需的推送服务进行选择并删除或注释不需要的部分,填写格式请仿照 GCM 的方式填写
#以下为 GCM 推送
$client->load("GCM",data=>{
    api_url => 'https://gcm-http.googleapis.com/gcm/send',
    api_key=>'AIzaSyB18io0hduB_3uHxKD3XaebPCecug27ht8',
    registration_ids=>["输入你自己从 GCMForMojo APP中获取到的令牌"],
    allow_group=>["接受群消息的号码,如需要推送全部群消息可删除这一行,每个群号码之间使用 "", 分隔"],
    ban_group=>[],
    allow_discuss=>[],
    ban_discuss=>[],
    #此处为讨论组,填写格式同上
});
#以下为 MiPush 推送
$client->load("MiPush",data=>{
    registration_ids=>[""],
    allow_group=>[""],
    ban_group=>[],
    allow_discuss=>[],
    ban_discuss=>[],
});
#以下为 HwPush 推送
$client->load("HwPush",data=>{
    registration_ids=>[""],
    allow_group=>[""],
    ban_group=>[],
    allow_discuss=>[],
    ban_discuss=>[],
});
#以下为 FmPush 推送
$client->load("FmPush",data=>{
    registration_ids=>[""],
    allow_group=>[""],
    ban_group=>[],
    allow_discuss=>[],
    ban_discuss=>[],
       });
$client->load("Openqq",data=>{
    #如果是微信改为 Openwx
    listen => [{host=>"0.0.0.0",port=>5000}, ] ,
    #如果是推送微信的话需要保证端口不重复,并请保证所设定的端口已经在防火墙内放行,同时需要在 APP 内设定好推送服务器的地址和端口
});
#不需要 APP 内回复功能请删除以上三行(不包括被 # 号注释掉的几行)
$client->run(); 

然后我们修改相关字段,比如

  • 自己的 GCM 令牌;
  • 允许通知的 QQ 群;
  • 允许通知的讨论组等;
    然后保存,保存的方法是先按下 esc 随后依次按下 :wq 即可。

获取 GCM 令牌

请注意,笔者默认在您阅读本节下文所有内容的同时,您的 Android 设备全程具有访问 Google Cloud Messaging 的能力

手机上安装 GCM for Mojo 应用,点击右侧菜单栏中的「设备码」选项,弹出的菜单里的文本即为 GCM 令牌,返回 SSH 粘贴到指定位置即可。

GCM 令牌获取处
GCM 令牌获取处

GCM 令牌如图所示

GCM 令牌
GCM 令牌

运行与服务常驻

当您的配置全部完成之后,便可尝试运行 Mojo-Webqq 服务端,其运行命令是

perl Webqq.pl

服务器会返回一个由 sm.ms 托管的二维码图片,点击这个图片的地址,使用手机 QQ 的「扫一扫」功能扫描,等待验证完成之后就可以使用了

登陆成功
登陆成功

此时如果推出 SSH 服务将会被中断,这时我们选择 screen 服务来守护这个服务,先按下 ctrl + c 终止上面运行中的 Mojo-Webqq 服务端,然后安装 screen

apt-get install screen

部分 VPS 已经内建了 screen 则会返回如下界面

已经安装完成的 screen
已经安装完成的 screen

安装完成后我们启动一个 screen 服务并在这个服务里运行 Mojo-Webqq 服务端

screen -S Mojo-Webqq
perl Webqq.pl

然后请按 Ctrl+A ,再按D键使此 screen 进入后台驻守,然后就可以中断 SSH 连接了。

至此,Mojo-Webqq 安装完毕,您可以使用绿色守护黑阈或者冰箱结束 QQ 的进程,享受来自 Google 的正统推送服务

三大节电软件
三大节电软件

写在后面

在 Android O 的 API 27 之后,Google 引入了后台检查功能,能对不需要常驻后台的应用进行更有效的管理,况且随着 Android P 的临近发布,Android 应用的 API 版本也马上就要提升到 API 28 了,预览版的节电模式和适应性电池用量(Adaptive Battery )也都有着很不错的表现;我们也有理由相信也希望这种令人心累的事情不再发生,相信在未来的不久所有的 App 都能按部就班,各司其职;然鹅…

Google Play 版 QQ
Google Play 版 QQ

溜了溜了 XDD ~

15
10