jpush / jpush/jpush-react-native

Background notifications doesn't work.

Open
#785 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
1.4k
Forks
348
PR merge metrics
No merged PRs in 30d

Description

你的运行环境

  • 插件版本: 2.8.0
  • react-native 版本:0.61.2

期望效果

Notifications should appear when application is closed.

实际效果

Notifications not appears when application is closed. When application is open - phone receiving notifications.

重现步骤

My AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.application.example">

  <uses-permission android:name="android.permission.INTERNET" />

  <!-- Required -->
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <!-- Include this only if you are planning to use the camera roll -->
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <!-- Include this only if you are planning to use the microphone for video recording -->
  <!-- <uses-permission android:name="android.permission.RECORD_AUDIO"/> -->

  <!-- Required  一些系统要求的权限,如访问网络等-->
  <uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE" />
  <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <!--华为角标-->
  <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE "/>

  <uses-permission android:name="android.permission.VIBRATE"/>
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /><!-- Android Q后台定位权限-->
  <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  <uses-permission android:name="android.permission.GET_TASKS" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity
        android:name=".wxapi.WXEntryActivity"
        android:label="@string/app_name"
        android:exported="true"
      />

      <activity
        android:name=".wxapi.WXPayEntryActivity"
        android:label="@string/app_name"
        android:exported="true"
      />

      <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />

      <!-- JPUSH -->

      <!-- Required SDK核心功能-->
      <activity
        android:name="cn.jpush.android.ui.PushActivity"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        android:exported="false">
        <intent-filter>
          <action android:name="cn.jpush.android.ui.PushActivity" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="${applicationId}" />
        </intent-filter>
      </activity>

      <!-- Required SDK 核心功能-->
      <!-- 可配置android:process参数将PushService放在其他进程中 -->
      <service
        android:name="cn.jpush.android.service.PushService"
        android:process=":pushcore">
        <intent-filter>
          <action android:name="cn.jpush.android.intent.REGISTER" />
          <action android:name="cn.jpush.android.intent.REPORT" />
          <action android:name="cn.jpush.android.intent.PushService" />
          <action android:name="cn.jpush.android.intent.PUSH_TIME" />
        </intent-filter>
      </service>

      <!-- since 3.0.9 Required SDK 核心功能-->
      <provider
        android:authorities="${applicationId}.DataProvider"
        android:name="cn.jpush.android.service.DataProvider"
        android:process=":pushcore"
        android:exported="false"
      />

      <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
      <!-- 若不启用该功能可删除该组件,或把 enabled 设置成 false ;App 不会被其他 App 拉起,但会拉起其他的 App。 -->
      <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="${applicationId}" />
        </intent-filter>

      </service>

      <!-- 可选,如果使用静态Activity方式拉起,该组件必须声明 -->
      <activity android:name="cn.jpush.android.service.DActivity"
                android:enabled="true"
                android:exported="true"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:taskAffinity="jpush.custom">
        <intent-filter>
          <action android:name="cn.jpush.android.intent.DActivity"/>
          <category android:name="${applicationId}" />
        </intent-filter>
      </activity>

      <!-- since 3.1.0 Required SDK 核心功能-->
      <provider
        android:authorities="${applicationId}.DownloadProvider"
        android:name="cn.jpush.android.service.DownloadProvider"
        android:exported="true"
      />

      <!-- Required SDK核心功能-->
      <receiver
        android:name="cn.jpush.android.service.PushReceiver"
        android:enabled="true">
        <intent-filter android:priority="1000">
          <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />   <!--Required  显示通知栏 -->
          <category android:name="${applicationId}" />
        </intent-filter>
        <intent-filter>
          <action android:name="android.intent.action.USER_PRESENT" />
          <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
        <!-- Optional -->
        <intent-filter>
          <action android:name="android.intent.action.PACKAGE_ADDED" />
          <action android:name="android.intent.action.PACKAGE_REMOVED" />

          <data android:scheme="package" />
        </intent-filter>
      </receiver>

      <!-- Required SDK核心功能-->
      <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>

      <!-- 3.5.0新增,用于定时展示功能 -->
      <receiver android:name="cn.jpush.android.service.SchedulerReceiver" android:exported="false"/>

      <!--since 3.3.0 Required SDK核心功能-->
      <activity
        android:name="cn.jpush.android.service.JNotifyActivity"
        android:exported="false"
        android:taskAffinity="jpush.custom"
        android:theme="@android:style/Theme.Translucent.NoTitleBar">
        <intent-filter>
          <action android:name="cn.jpush.android.intent.JNotifyActivity" />
          <category android:name="${applicationId}" />
        </intent-filter>
      </activity>

      <!-- since 3.5.6 新增华硕通道  -->
      <receiver android:name="cn.jpush.android.asus.AsusPushMessageReceiver"/>

      <meta-data android:name="JPUSH_CHANNEL" android:value="${JPUSH_CHANNEL}" />
      <meta-data android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}" />
    </application>

</manifest>

In App.js:

componentDidMount() {
  console.log('init jiguang')
  JPush.setLoggerEnable(true);
  JPush.init();
}

I don't see any services working in background in 'Running Services' from JPush. Also no errors in console.

Debug logs

包括 Android 或 iOS 的日志:
Android 10

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the AndroidManifest.xml declarations for JPush services, receivers, and activities, then compare them with the JPush.init() call in App.js and the Android 10 debug context. Reproduce the issue with the application closed and inspect the reported Running Services and console behavior; done means notifications appear while closed and the relevant background activity is observable.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, react-native
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.