首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android城市飞艇6.0.1,无法拦截推送通知动作

Android城市飞艇6.0.1,无法拦截推送通知动作
EN

Stack Overflow用户
提问于 2015-04-16 14:49:40
回答 1查看 1.2K关注 0票数 2

我将BaseIntentReceiver扩展到一个新的类PushIntentReceiver中,目的是在push通知对象中采取与键/值对不同的操作。

虽然我的推送通知显示正确,但PushIntentReceiver从未被调用。因此,单击通知似乎没有任何作用。每个方法的内部都有一个日志标记,例如

代码语言:javascript
复制
@Override
protected void onBackgroundPushReceived(Context context, PushMessage message) {
    Log.i(TAG, "Received background push message: " + message);
}

但所有这些都没有出现在LogCat中。无论是注册方法,还是通知单击方法或其他任何东西。类似地,在这些函数中,我的断点不会被击中。

为什么会这样呢?我已经包括了我的AndroidManifest的相关部分。在这个应用程序中的早期版本的UrbanAirship是当你们第一次创建Amazon时,Amazon是从Android中分离出来的。所以我不知道这是AndroidUA5.0还是4.x,但是我通过BroadcastReceivers进行的推送通知拦截在这个旧版本的库中确实有效。现在一切都被重组为UA 5.1.x+的方式,我无法让它开始工作。

洞察力

这是我的AndroidManifest.xml的相关部分

代码语言:javascript
复制
<!-- REQUIRED for Urban Airship -->
    <service
        android:name="com.urbanairship.push.PushService"
        android:label="Push Notification Service" />

    <!-- Required for analytics -->
    <service
        android:name="com.urbanairship.analytics.EventService"
        android:label="Event Service" />

    <!-- Required for Actions -->
    <service android:name="com.urbanairship.actions.ActionService" />

    <!-- Required for Rich Push -->
    <service android:name="com.urbanairship.richpush.RichPushUpdateService" />

    <!-- OPTIONAL for Urban Airship Location (for segments support) -->
    <service
        android:name="com.urbanairship.location.LocationService"
        android:label="Segments Service" />

    <!-- This is required for persisting preferences related to push and location -->
    <!-- MODIFICATION REQUIRED - Replace PACKAGE_NAME with your package name -->
    <provider
        android:name="com.urbanairship.UrbanAirshipProvider"
        android:authorities="com.myapp.app.urbanairship.provider"
        android:exported="true"
        android:multiprocess="true"
        android:permission="com.myapp.app.permission.UA_DATA" />

    <!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
    <!-- Replace the receiver below with your package and class name -->
    <receiver
        android:name="com.myapp.app.controllers.push.PushIntentReceiver"
        android:exported="false">

        <intent-filter>
            <action android:name="com.urbanairship.push.CHANNEL_UPDATED" />
            <action android:name="com.urbanairship.push.OPENED" />
            <action android:name="com.urbanairship.push.RECEIVED" />
            <action android:name="com.urbanairship.push.DISMISSED" />


            <category android:name="com.myapp.app" />
        </intent-filter>
    </receiver>

 <receiver android:name="com.urbanairship.CoreReceiver"
        android:exported="false">

        <intent-filter android:priority="-999">
            <action android:name="com.urbanairship.push.OPENED" />

            <!-- MODIFICATION REQUIRED - Use your package name as the category -->
            <category android:name="com.myapp.app" />
        </intent-filter>
    </receiver>



    <!-- REQUIRED for PlayServiceUtils.handleAnyPlayServicesError to handle Google Play Services recoverable errors. -->
    <activity
        android:name="com.urbanairship.google.PlayServicesErrorActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <!-- REQUIRED for GCM -->
    <receiver
        android:name="com.urbanairship.push.GCMPushReceiver"
        android:permission="com.google.android.c2dm.permission.SEND">

        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <!-- MODIFICATION REQUIRED - Use your package name as the category -->
            <category android:name="com.myapp.app" />
        </intent-filter>
    </receiver>
    <!-- end Urban Airship tags -->
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 21:10:13

这样的问题通常发生在意图接收方扩展基本意图接收方,但不调用onReceive而不调用Super时,程序包名称为类别混乱,或者应用程序不声明和使用"PACKAGE_NAME.UA_DATA“权限时。SDK现在默认自动启动应用程序的启动程序活动,但是如果该部分不能工作,那么您很可能需要声明权限。

在AndroidManifest.xml的清单部分中添加:

代码语言:javascript
复制
<permission android:name="com.myapp.app.permission.UA_DATA" android:protectionLevel="signature" />
<uses-permission android:name="com.myapp.app.permission.UA_DATA" />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29678344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档