Coder Social home page Coder Social logo

jpush / jpush-hbuilder-demo Goto Github PK

View Code? Open in Web Editor NEW
144.0 31.0 53.0 101.29 MB

极光推送官方提供的 HBuilder 示例代码,可用于快速集成 JPush SDK 到 HBuilder 项目里。

Home Page: https://docs.jiguang.cn

License: MIT License

HTML 6.59% CSS 20.18% JavaScript 59.15% Java 2.20% Objective-C 11.89%

jpush-hbuilder-demo's Introduction

JPush HBuilder Demo

platforms weibo

极光推送 官方提供的 JPush HBuilder Demo。是基于 HBuilder 提供的 第三方插件架构 进而开发出的推送插件,并集成到 iOS/Android 工程里的 demo。开发者可以通过我们提供的安装方式将推送功能集成到自己的项目中,从而在 js 层实现对推送的控制。

可以将 Demo 直接导入 Android Studio 或 Xcode 运行,如果想要在自己的项目中集成 JPush,可以参考以下步骤:

Android

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,可以直接修改):

    <feature
        name="Push"
        value="io.dcloud.feature.jpush.JPushService" >
    </feature>
  5. app/build.gradle 中添加:

    android {
        ...
        defaultConfig {
            applicationId "com.xxx.xxx" // JPush 上注册的包名.
            ...
            ndk {
                // 选择要添加的对应 cpu 类型的 .so 库。
                abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
                // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
            }
            manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                JPUSH_APPKEY : "应用的 AppKey", // JPush上注册的包名对应的 appkey
                JPUSH_CHANNEL : "developer-default", // 暂时填写默认值即可
            ]
            ...
        }
        ...
    }
    dependencies {
        ...
        compile 'cn.jiguang.sdk:jpush:3.3.4'  // 此处以JPush 3.3.4 版本为例。
        compile 'cn.jiguang.sdk:jcore:2.1.2'  // 此处以JCore 2.1.2 版本为例。
        ...
    }
  6. AndroidManifest.xml 中添加:

     <!-- since 3.3.0 Required SDK 核心功能-->
     <!-- 可配置android:process参数将PushService放在其他进程中 -->
     <!--User defined.  For test only 继承自cn.jpush.android.service.JCommonService-->
     <service android:name="io.dcloud.feature.jpush.PushService"
         android:process=":pushcore">
         <intent-filter>
             <action android:name="cn.jiguang.user.service.action" />
         </intent-filter>
     </service>
    
     <!-- User defined.  For test only  用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调-->
     <!--since 3.3.0 接收JPush相关事件-->
     <receiver android:name="io.dcloud.feature.jpush.PushMessageReceiver">
         <intent-filter>
             <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
             <category android:name="${applicationId}"></category>
         </intent-filter>
     </receiver>
    <receiver
      android:name="io.dcloud.feature.jpush.JPushReceiver"
      android:enabled="true"
      android:exported="false">
        <intent-filter>
          <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!-- Required 用户注册SDK的 intent -->
          <action android:name="cn.jpush.android.intent.UNREGISTRATION" />
          <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!-- Required 用户接收SDK消息的 intent -->
          <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!-- Required 用户接收SDK通知栏信息的 intent -->
          <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- Required 用户打开自定义通知栏的 intent -->
          <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" /> <!-- Optional 用户接受 Rich Push Javascript 回调函数的intent -->
          <action android:name="cn.jpush.android.intent.CONNECTION" /> <!-- 接收网络变化 连接/断开 since 1.6.3 -->
          <category android:name="${JPUSH_PKGNAME}" />
        </intent-filter>
    </receiver>

iOS 手动安装

  • 配置 manifest.json ,首先用源码的方式打开工程 /Pandora/ 目录下的 manifest.json ,在"permissions"中添加新的插件名称:

      "permissions": {
          "Push": {
      		"description": "极光推送插件"
      	}
      }
    
  • 配置 feature.plist ,在 Xcode 中打开 ../PandoraApi.bundle/ 目录下的 feature.plist ,为插件添加新的 item:

feature.plist

  • 将 JPush_Support 文件夹中所有内容在 Xcode 中拖到自己的工程里

  • 在 JPush_Support/PushConfig.plist 中配置 APP_KEY 、 PRODUCTION(0 开发 / 1 发布)、IDFA(是否需要通过广告标识符启动 sdk)

  • 打开 xcode,点击工程目录中顶部的 工程,选择(Target -> Build Phases -> Link Binary With Libraries),添加以下框架:

    CFNetwork.framework CoreFoundation.framework CoreTelephony.framework SystemConfiguration.framework CoreGraphics.framework Foundation.framework Security.framework UIKit.framework AdSupport.framework UserNotifications.framework(Xcode 8 及以上) libresolv.tbd(若存在 libresolv.dylib 则替换为 libresolv.tbd) libz.tbd(若存在 libz.dylib 则替换为 libz.tbd)

API 说明

iOS、Android 详细 API 文档请参阅 JPush Hbuilder API 文档

插件的 API 集中在 jpush.js 文件中,该文件的具体位置如下:

Android:

[Project]/android/assets/apps/H51423BFB/www/js/jpush.js

iOS:

  [Project]/iOS/HBuilder-Hello_jpush/HBuilder-Hello/Pandora/apps/HelloH5/www/js/jpush.js

常见问题

iOS

  1. 提示 Not get deviceToken yet。

    找到 Project -> TARGETS ->Capabilities -> Push Notifications 点开推送选项。

  2. 新版本中 H5P deviceToken 的获取回调已经不回调给 PGPush了。因此需要需要在 Appdelegate.m 文件中的 didRegisterForRemoteNotificationsWithDeviceToken 方法中添加代码:[JPUSHService registerDeviceToken:deviceToken]; ,注意导入头文件 import "JPUSHService.h"

  3. 新版本 H5P 官方已经把 PGPush 移除,所以需要将 demo 中的 PGPush.h 添加到自己工程。

  4. 收不到推送:首先按照正确方式再次配置证书、描述文件:iOS 证书设置指南

  5. PushConfig.plist 中的属性:

    • APP_KEY:应用标识
    • CHANNEL:渠道标识
    • IsProduction:是否生产环境
    • IsIDFA:是否使用 IDFA 启动 sdk

更多

JPush 官网文档

jpush-hbuilder-demo's People

Contributors

huangminlinux avatar joshlipan avatar lhw5123 avatar pikacode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jpush-hbuilder-demo's Issues

android引入报错

import io.dcloud.common.DHInterface.IWebview;
import io.dcloud.common.DHInterface.StandardFeature;
import io.dcloud.common.util.JSUtil;

这三个类hbuilder引入报错

【报bug】点击推送通知,不触发openNotification事件

1、IOS的Demo中的jpush.js未更新,不存在openNotificationIniOSCallback方法,使用最新的jpush.js替换后仍不触发openNotification事件。
2、JPushPlugin.m中
NSString *const kJPushOpenNotification = @"plus.Push.receiveNotificationIniOSCallback"; //前台收到推送消息
需修改为
NSString *const kJPushOpenNotification = @"plus.Push.openNotificationIniOSCallback"; //触发推送通知事件

最新版的Hbuilder项目按照demo集成提示manifest没有配置AppKey

我在2个配置文件AndroidManifest加上


或者在HBuilder配置文件manifest下加上这个节点还是不行 其他配置都是和demo一样的 demo能够运行
"distribute": {
"plugins": {
"push": {
"Push": {
"appid": "tienon.com.erp",
"appkey": "5435345",
"appsecret": "35345435"
}
}
},

我想问下是我配置的问题还是最新版的Hbuilder不兼容呢

Android点击消息将重启应用

收到通知消息后,会重启应用(当前应用已运行在前台),重启后应用停留在启动页,目前发现该现象出现在Android OS 4.4.0,Android 6.0未发现此现象

help?

onAppStart 怎么才能执行??? mui都删了PGpush.h 我要重新使用老版本的mui?

android 点击通知栏消息无法启动应用

您好,我现在遇到这个情况,Android应用被杀死了,但是推送服务被其它应用拉起了,加入了这一段
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter > <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="com.XXX.XXX"/> </intent-filter> </service>

我现在是可以收到消息,但是点击消息的时候无法启动应用,点击通知栏消息没有反应。能否帮看看怎么解决?

我现在有一个hbuild的工程,我现在该如何集成你们的demo

hbuild内我自己搭建了一个H5+的APP,我们打包也都是在Hbuild内打包到手机上进行测试的,现在我需要集成激光推送sdk,我该如何继续,是不是要先把我hbuild的工程转成xcode?然后在xcode内集成你们的demo?能否直接在hbuid内直接集成,谢谢~

jpush-hbuilder-demo问题

我把demo都按照离线打包的方式放在android 然后手机打开一直卡在hbuilder界面里 什么情况 demo都是官方提示做的 自问没少哪一步 还是不行

安卓的demo本地不能成功build

报错:AGPBI: {"kind":"error","text":"Tag \u003cmanifest\u003e attribute package has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":1}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003cpermission\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":22}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003cuses-permission\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":25}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003ccategory\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":95}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003ccategory\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":110}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003ccategory\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":133}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003ccategory\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":157}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003ccategory\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":166}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003cprovider\u003e attribute authorities has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":183}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003cprovider\u003e attribute authorities has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":188}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"Tag \u003ccategory\u003e attribute name has invalid character \u0027?\u0027.","sources":[{"file":"\\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml","position":{"startLine":200}}],"original":"","tool":"AAPT"}
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:2: Tag attribute package has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:23: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:26: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:96: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:111: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:134: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:158: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:167: Tag attribute name has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:184: Tag attribute authorities has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:189: Tag attribute authorities has invalid character '?'.
\?\E:\wwwroot\Hbuilder_APP\jpush-hbuilder-demo-master\android\app\build\intermediates\manifests\full\debug\AndroidManifest.xml:201: Tag attribute name has invalid character '?'.

更新文件失败

我把我自己的UNI-APP打包后放入到DEMO工程中启动一直在等待中,显示不了页面

iOS 设置别名问题

iOS设置别名,在极光后台给设置的别名发送推送,无法发送,错误是:“此别名或者标签还没有在任何客户端SDK提交设置成功。“在Android端别名可以接收到推送!

你好,hbuilder新的离线打包环境已经没有PGPush.h接口暴露

你好,hbuilder新的离线打包环境已经没有PGPush.h接口暴露
因为需要支持iphonex,不得不把打包环境升级,但是hbuilder新的离线打包环境已经没有PGPush.h接口暴露,之前贵司给出的推送方案基于此,此方式已经不能正常使用了,不知道该如何解决。谢过

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.