android客户端进程结束掉,然后点击通知栏极光推送的通知,极光有没有监听去启动这个客户端

别名
android
标签: #<Tag:0x00007fb846144370> #<Tag:0x00007fb846144208>

(怦然心动) #8

努比亚 Z9 Max NX512J 下面是极光的所有配置 ,我觉得配置应该没问题,因为我能收到通知,也能通过自定义的广播去处理,进程没结束掉的话,点击通知跳转传参那些都没有问题的,只有进程被结束掉就会有这个问题,进程结束通知栏的清除的话没清除的话我也可以调用你们极光的方法去清除,所以我想知道极光是不是支持进程结束后通知栏如果有通知的话,通知的点击处理是不是有监听或者广播什么的 @SanderLee

<!-- Required -->
<permission
    android:name="com.tuliu.gov.permission.JPUSH_MESSAGE"
    android:protectionLevel="signature" />

<!-- Required -->
<uses-permission android:name="com.tuliu.gov.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.VIBRATE" />

<!-- Optional. Required for location feature -->
<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.CAMERA" />
<!--Jpush need permission-->


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" />
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  <!-- 极光推送 -->
    <!-- Required SDK 核心功能-->
    <!-- option since 2.0.5 可配置PushService,DaemonService,PushReceiver,AlarmReceiver的android:process参数 将JPush相关组件设置为一个独立进程 -->
    <!-- 如:android:process=":remote" -->
    <service
        android:name="cn.jpush.android.service.PushService"
        android:enabled="true"
        android:exported="false">
        <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 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.tuliu.gov" />
        </intent-filter>
    </service>

    <!-- Required -->
    <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" />
            <category android:name="com.tuliu.gov" />
        </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核心功能-->
    <activity
        android:name="cn.jpush.android.ui.PushActivity"
        android:configChanges="orientation|keyboardHidden"
        android:exported="false">
        <intent-filter>
            <action android:name="cn.jpush.android.ui.PushActivity" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="com.tuliu.gov" />
        </intent-filter>
    </activity>
    <!-- Required SDK核心功能-->
    <service
        android:name="cn.jpush.android.service.DownloadService"
        android:enabled="true"
        android:exported="false"></service>
    <!-- Required SDK核心功能-->
    <receiver android:name="cn.jpush.android.service.AlarmReceiver" />

    <!-- User defined. 用户自定义的广播接收器-->
    <receiver
        android:name=".receiver.JpushReceiver"
        android:enabled="true">
        <intent-filter>
            <!--Required 用户注册SDK的intent-->
            <action android:name="cn.jpush.android.intent.REGISTRATION" />
            <!--Required 用户接收SDK消息的intent-->
            <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
            <!--Required 用户接收SDK通知栏信息的intent-->
            <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
            <!--Required 用户打开自定义通知栏的intent-->
            <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
            <!--Optional 用户接受Rich Push Javascript 回调函数的intent-->
            <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />
            <!-- 接收网络变化 连接/断开 since 1.6.3 -->
            <action android:name="cn.jpush.android.intent.CONNECTION" />
            <category android:name="com.tuliu.gov" />
        </intent-filter>
    </receiver>

    <!-- Required. For publish channel feature -->
    <!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。-->
    <!-- 例如: -->
    <!-- 发到 Google Play 的APK可以设置为 google-play; -->
    <!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
    <!-- 目前这个渠道统计功能的报表还未开放。-->
    <meta-data
        android:name="JPUSH_CHANNEL"
        android:value="developer-default" />
    <!-- Required. AppKey copied from Portal -->
    <meta-data
        android:name="JPUSH_APPKEY"
        android:value="4a03a457a63330f9c0ce7b0d" />
    <!-- Jpush End -->

#9

你好,
a. 从Manifest中看到,当前极光推送相关的组件并没有配置多进程,所以应用主进程被杀掉所有进程就会都被杀掉.建议你可以把pushserice配置成一个独立的集成.

b. 当前问题点需要分析的是为什么你把应用进程杀掉之后应用的通知没有被清除,因为通知的点击回调是系统通知的,如果系统没有通知到对应的receiver,那就不会有响应了,请知悉。


(怦然心动) #10

嗯,第一个问题明白了, 第二个问题,是这样的,app使用system.exit()退出,但是不杀死进程,然后推送一条自定义的消息,手机通知栏会显示这条通知,但是这条通知点击后并没有进入到我自定义的BroadcastReceiver中, 如果app不退出,推送一条自定义消息,通知栏会显示这条通知,然后点击通知也能进入到broadcaseReceiver中 @SanderLee


#11

你好

  1. 首先要明确一个问题,目前推送一条自定义消息(非通知)极光推送是不会帮忙弹出通知的请知悉,
  2. 请确认一下是推送的是自定消息还是推送的通知.
  3. 如果是自定义消息那这个通知应该是你收到自定义消息后自己弹出的通知,请明确一下这个问题我们再来分析这个问题.

(Forest) #12

我跟楼主遇到同一个问题 ,我是上个月发现的,我几乎翻阅了所有极光的资料,根本就没有发现解决方法。
1、使用绝对不是什么自定义消息,我根本没有写通知,弹出通知就是你们SDK的。
2、你要清楚我们问题是:打开App通知会正确回调BroadcastReceiver。关闭App不会回调,而是直接打开APP。


(Forest) #13

@SanderLee


#14

就目前的测试情况是:
已经有通知展示到通知栏,此时杀掉app进程,这个时候通知栏的通知也会被清除的了

你确认此时你的通知还在通知栏吗?


(Forest) #15

并不需要杀掉进程,只需要关闭APP等几分钟。我已经找到原因了是因为这个Service没有注册。

我有个小米一直获取不了RegistrationID,也是这个原因。


(changxj_o) #16

你好,我在小米4上面也同样遇到了这个问题,当应用结束退出进程关闭时推送消息可以显示在通知栏,因为sdk自己启动的:pushcore进程还活着,我自己的receiver只处理了open的广播。但是点击通知消息时无法进入到我自己的receiver,但是当应用没有关闭正常开启的时候点击通知是可以走到我自己的receiver里面的,而且当我应用退出之后通知栏的通知也不会自动清除掉。
麻烦问下这个问题最后怎么解决的~~@SanderLee


#17

小米的,你试试将app加入以下保护措施,再测试看看
https://docs.jiguang.cn/jpush/client/Android/android_faq/#_2


(changxj_o) #18

感谢回复,我加入自启动管理列表推出应用点击通知页可以走到我的receiver代码中了。看起来这个应该是无法自启动导致的是么。
但是我测试了一下如果不使用自定义的receiver处理NOTIFICATION_OPENED事件的话,即使不在自启动列表中且退出了应用点击通知也可以打开启动activity,请问这个是怎么实现的呢?因为我们的应用逻辑需要自定义应用打开的界面,让每个用户手动去添加自启动后权限又不大可能。求支援


#19

诶,造成这个区别的原因应该是在,push service 还在,但是你的app已经被杀死了,自定义的是不是依赖app进程?

默认的通知栏点击 应该是相当于点击打开应用主界面的效果


android 手机上可以收到消息,但是自己定义的MyReceiver接收不到广播,并且收不到自定义消息
(changxj_o) #20

是的,我这边应用退出之后app进程会自己杀死,那我可以将我的receiver运行在pushcore的进程中么?或者有什么其他方法实现这个目标~~请指教,谢谢


#21

第一个肯定不行啊。

看一下楼上的链接,要不你考虑在这种情况下, 点击通知栏后就启动app,然后再处理一下消息呢(同时发的自定义消息之类的)?(这个纯属个人猜想,不知道是否可行)


(changxj_o) #22

现在的问题在于,小米的禁止自启动就是防止各种应用注册系统事件监听然后再系统广播接受后启动自己,它直接不让你运行receiver里面的代码,所以一旦你的应用退出了,就没有其他机会启动了,所以这时候咱们sdk转发过来的广播接受到之后本应该运行的代码根本就不运行,啥都干不了……我估计可能得考虑退出应用后不杀进程,后台一直驻留一个service之类的了,就跟咱们sdk做的一样我再看一下吧谢了哈


#23

恩恩,你研究一下:blush:


(怦然心动) #24

按道理,进程结束掉了,通知是会被干掉,没被干掉的情况下,我是这样做的第一步:将自定义的通知配置到进程中去,一定要这么做,不然的话你的app进程结束掉了,不管怎么点击,你配置的广播监听是接收不到的,也就是说点了广播不会运行到你注册的广播里面去


第二步:这里就简单了,点击广播能响应到我们的广播接受者中去的话,开始处理广播,app没启动就去启动app进入主界面,再从主界面跳转到要跳转的界面中去(这样做跳转是为了防止你直接跳转到指定页面后,返回就结束了app,所以从main界面跳转过去),顺便把参数带过去,app启动了的话就直接跳转到指定页面参数带过去然后处理就行了


android 退到后台后,收到通知后跳不到指定界面
求教:android app杀死后点收到的推送通知 如何启动app
收到推送后跳转到指定页,点击返回后如何回到应用的首页?
极光推送成功,点击通知栏跳转指定页面失败!!
安卓打开app在没有登录的时候收到推送在点击返回,直接返回到退出应用。
收到通知后跳转指定页面
Android 进程退出,收到了推送,点击通知消息,无法打开
Android JPush 怎么设置点击Notification跳转页面的回退Activity?
查看消息后返回问题
oppo点击通知栏无法跳转到响应界面
android 手机上可以收到消息,但是自己定义的MyReceiver接收不到广播,并且收不到自定义消息
常见问题 - JPush 合集(持续更新)
魅族MX5,小米5不能显示通知
自定义Receiver后当应用后台运行时收到推送点击通知栏没能返回应用
Android7.0点击通知无法立即打开应用要等比较久
收到通知后跳转指定页面
react native 的Android中,怎样设置能够让程序在未运行时能够收到通知
#25

感谢分享:blush:


(Jackking) #26

明白了多谢,我在看看能不能截个消息的图片发过去


#27

你好,请问这个问题你解决了吗?