0

我正在开发一个 Android 应用程序。用户可以互相聊天。我在 PushReceiver 类上获取消息。应用程序打开或关闭我的意思是前景或背景;代码块从 API 19 工作到 API 26,但不高于 API 26。我尝试调试 onReceive 函数,但它不在 Android O 上调用。

我想再说一遍。我的代码块工作 API 25 及更低版本。

我正在使用 pushy.me 服务。

我的广播接收器类:

public class PushReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    String notificationTitle = "Title";
    String notificationText = "Text";
    Bundle bundle = intent.getExtras();
    JSONObject jsonObject = new JSONObject();
    for (String key : bundle.keySet()) {
        try {
            jsonObject.put(key, wrap(bundle.get(key)));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    try {

        notificationText = jsonObject.get("body").toString();
        notificationTitle = jsonObject.get("title").toString();
    } catch (Exception e) {}

    // Prepare a notification with vibration, sound and lights
    NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
            .setAutoCancel(true)
            .setSmallIcon(android.R.drawable.ic_dialog_info)
            .setContentTitle(notificationTitle)
            .setContentText(notificationText)
            .setLights(Color.RED, 1000, 1000)
            .setVibrate(new long[]{0, 400, 250, 400})
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT));
    // Automatically configure a Notification Channel for devices running Android O+
    Pushy.setNotificationChannel(builder, context);
    // Get an instance of the NotificationManager service
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
    // Build the notification and display it
    notificationManager.notify(1, builder.build());
}
}

我的清单:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission  android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
...
<receiver
        android:name=".Notification.PushReceiver"
        android:exported="false">
        <intent-filter>
            <!-- Do not modify this -->
            <action android:name="pushy.me" />
        </intent-filter>
    </receiver> <!-- Pushy Update Receiver -->
    <!-- Do not modify - internal BroadcastReceiver that restarts the listener service -->
    <receiver
        android:name="me.pushy.sdk.receivers.PushyUpdateReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
        </intent-filter>
    </receiver> <!-- Pushy Boot Receiver -->
    <!-- Do not modify - internal BroadcastReceiver that restarts the listener service -->
    <receiver
        android:name="me.pushy.sdk.receivers.PushyBootReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver> <!-- Pushy Socket Service -->
    <!-- Do not modify - internal service -->
    <service android:name="me.pushy.sdk.services.PushySocketService" /> <!-- Pushy Job Service (added in Pushy SDK 1.0.35) -->
    <!-- Do not modify - internal service -->
    <service
        android:name="me.pushy.sdk.services.PushyJobService"
        android:exported="true"
        android:permission="android.permission.BIND_JOB_SERVICE" />

编辑:pushy.me Android Demo here

4

1 回答 1

0

最新的Pushy Android SDK增加了对 Android O 省电优化的支持(App Standby / deprecation of Service),请按照本页说明进行更新:

https://pushy.me/docs/android/get-sdk

此外,请确保在标签下添加以下新JobService声明:AndroidManifest.xml<application>

<!-- Pushy Job Service (added in Pushy SDK 1.0.35) -->
<!-- Do not modify - internal service -->
<service android:name="me.pushy.sdk.services.PushyJobService"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:exported="true" />
于 2019-12-09T04:58:16.407 回答