TP5+Hbuilder+极光推送

PHP部分

 // 极光的key和secret,在极光注册完应用后,会生成
    protected function _initialize()
    {
        parent::_initialize();
        $jpushConfig = Config::get("jpush");
        $this->app_key = $jpushConfig['app_key'];
        $this->master_secret = $jpushConfig['master_secret'];
        $this->url = "https://api.jpush.cn/v3/push";//推送的地址

        $this->userModel = model('User');
        //用户信息
        if (Session::get('user.share_user_id')) {
            $this->user_id = Session::get('user.share_user_id');
            $this->company_id = Session::get('user.share_com_id');
        } else {
            $this->user_id = Session::get('user.id');
            $userInfo = $this->userModel->where(['id' => $this->user_id])->find();
            $this->company_id = $userInfo['company_id'];
            if ($this->company_id != Session::get('user.company_id'))
                Session::set('user.company_id', $this->company_id);
        }
    }

    public function sendMsg($type,$pushData){
        //需要为设备设置aliassendMsg
        if($type=='all'){
            $receiver = 'all';
        }else{
            $alias = $type;
            $receiver['alias'] = array($alias);
        }


        $content = $pushData['content'];
        $title = $pushData['title'];

        $extras = array();
        $result = $this->push($receiver,$content,$title,$extras);
        if($result){
            $res_arr = json_decode($result, true);
            if(isset($res_arr['error'])){   //如果返回了error则证明失败
                //错误信息 错误码
                echo json_encode(array('status'=>0,'errorCode'=>$res_arr['error']['code'],'errorMessage'=>$res_arr['error']['message']));
                exit;
            }else{
                //处理成功的推送......
                //可执行一系列对应操作~
                echo json_encode(array('status'=>1,'msg'=>'推送成功'));
                exit;
            }
        }else{      //接口调用失败或无响应
            echo json_encode(array('status'=>0,'msg'=>'接口调用失败或无响应'));
            exit;
        }

    }

    public function push($receiver = 'all', $content = '', $title = '', $extras = array(), $m_time = 86400)
    {
        $app_key = $this->app_key; //待发送的应用程序(appKey),只能填一个。
        $master_secret = $this->master_secret; //主密码
        $url = "https://api.jpush.cn/v3/push"; //推送的地址
        $base64 = base64_encode("{$app_key}:{$master_secret}");
        $header = array("Authorization:Basic {$base64}", "Content-Type:application/json");
        $data = array();
        $data['platform'] = 'all'; //目标用户终端手机的平台类型android,ios,winphone
        $data['audience'] = $receiver; //目标用户

        $data['notification'] = array(
            //统一的模式--标准模式
            "alert" => $content,
            //安卓自定义
            "android" => array(
                "alert" => $content,
                "title" => $title,
                "builder_id" => 1,
                "extras" => array("data" => $extras)
            ),
            //ios的自定义
            "ios" => array(
                "alert" => $content,
                "badge" => "1",
                "sound" => "default",
                "content-available" => true,
                "extras" => array("data" => $extras)
            ),
        );

        //附加选项
        $data['options'] = array(
            "sendno" => time(),
            "time_to_live" => $m_time, //保存离线时间的秒数默认为一天
            "apns_production" => false, //指定 APNS 通知发送环境:0开发环境,1生产环境。
        );
        $param = json_encode($data);

        $res = $this->push_curl($param, $header, $url);

        if ($res) { //得到返回值--成功已否后面判断
            return $res;
        } else { //未得到返回值--返回失败
            return false;
        }
    }

    //推送的Curl方法
    public function push_curl($param = "", $header = "", $url = "")
    {
        if (empty($param)) {
            return false;
        }
        $postUrl = $url;
        $curlPost = $param;
        $ch = curl_init(); //初始化curl
        curl_setopt($ch, CURLOPT_URL, $postUrl); //抓取指定网页
        curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 增加 HTTP Header(头)里的字段
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 终止从服务端进行验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $data = curl_exec($ch); //运行curl

        curl_close($ch);
        return $data;
    }

Hbuilder本地打包

步骤:

  1. 选择项目;
  2. 发行;
  3. 原生app-本地打包;
  4. 生成本地打包app资源;
    在这里插入图片描述

参考【Android平台本地(离线)打包指南】

  1. 配置编译工程
    导入演示应用HBuilder-Hello工程
    启动AndroidStudio 点击导入工程“import project”
    在这里插入图片描述
  2. 选中工程所在目录点击“OK”
    在这里插入图片描述
  3. 选择生成的AndroidStudio工程的保存路径,然后点击“next”,
    在这里插入图片描述
  4. 在演示工程中已经配置好HelloH5应用相关资源,完成导入后,可Shift F10直接编译运行:
    在这里插入图片描述
  5. 从SDK目录中拷贝要使用的feature库到工程app/libs目录
    参考“Feature列表.xls”文档确定应用中使用到的扩展API,拷贝libs目录中对应的**“jar”文件拷贝到工程的app->libs目录下。
    如果有引用
    “so”文件需要拷贝到工程的app->src->main->jniLibs**下对应目录中。
    如使用分享功能(新浪微博分享、腾讯微博分享,微信分享),则需要拷贝以下文件:
    在这里插入图片描述
  6. 拷贝完成后在工程中刷新可在工程的libs目录下显示:
    在这里插入图片描述
  7. 配置应用的权限
    参考“Feature列表.xls”文档确定应用中使用到的扩展API,在AndroidManifest.xml文件中删除不用到API的权限。
    如不使用音频(plus.audio.*)相关5+ API,则可删除Audio相关的权限:
    在这里插入图片描述
  8. 配置其它第三方库的数据
    由于第三方库需要使用一些特定的数据,所以在使用时需要将相关参数配置到AndroidManifest.xml文件中。
    如使用分享功能,则需要配置各分享平台的申请应用的相关参数:
    在这里插入图片描述
  9. 配置应用的包名及版本号
    打开AndroidManifest.xml文件,在代码视图中修改根节点的package属性值,如下:
    package为应用的包名,采用反向域名格式,为应用的标识;
    versionCode为应用的版本号,建议与manifest.jsonversion -> code值一致;
    versionName为应用的版本名称,建议与manifest.json中version -> name值一致。
    在这里插入图片描述
  10. 配置应用名称
    打开app->res -> values -> strings.xml文件,修改“app_name”字段值,该值为安装到手机上桌面显示的应用名称,建议与manifest.json中name(基础配置中的应用名称)对应:
    在这里插入图片描述
  11. 配置应用图标和启动界面
    将应用的图标(文件名为icon.png)启动图片按照对应的尺寸拷贝到工程的app->src->main->res -> drawable-XXX目录下:
    在这里插入图片描述
  12. 更新应用资源
    打开app->src->main->assets -> apps 目录,将“HelloH5”目录名称修改为应用manifest.json中的id名称(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:
    在这里插入图片描述
  13. 配置应用信息
    打开app->src->main->assets -> data下的control.xml文件,修改appid和appver的值:
    appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;
    appver为应用的版本号,必须与manifest.json中的version -> name值完全一致;
    version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。
    在这里插入图片描述
  14. 配置完成编译运行
    应用配置完毕,按Shift F10编译运行应用
    在弹出的设备列表对话框中选择要运行的设备:
    在这里插入图片描述

参考【JPush HBuilder Demo步骤】

Demo 用法
通过 Android Studio 引入项目目录下的 android 目录,再替换 ./android/app/build.gradle 中的「应用的包名」和「应用的 AppKey」。
集成指南
HBuilder 项目集成第三方插件,需先参考 HBuilder 官方的离线打包教程,将您的 HBuilder 项目集成进 Android 工程中。之后再执行以下步骤:

1.拷贝 ./android/app/src/main/java/io.dcloud.feature.jpush 文件夹至你 Android Studio 工程的 /src/main/java/ 目录下。

2.拷贝 ./jpush.js 到你 Android Studio 工程的 /assets/apps/HBuilder应用名/js/ 下。

3.在 /assets/apps/你的应用名/www/manifest.json 文件中添加:
"Push": {"description": "消息推送"}

4.在 /assets/data/dcloud_properties.xml 中添加(如果已存在 Push feature,可以直接修改):
在这里插入图片描述
5.在 app/build.gradle 中添加:
在这里插入图片描述
6.在 AndroidManifest.xml 中添加:
在这里插入图片描述

打包apk报错

错误: app:transformClassesWithMultidexlistForDebug

参考:https://www.edwardbeazer.com/execution-failed-for-task-app-transformclasseswithmultidexlistfordebug/
在这里插入图片描述

其它问题参数

androidStudio下集成hbuild推送报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oct zz拾月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值