当前位置: 首页 > 知识库问答 >
问题:

接收来自urbanairship android的推送通知时获取通道=空

张权
2023-03-14

当我向设备发送推送通知时,我收到了可怕的“程序包”com.mycompany.applicationame“的开发人员警告未能在频道”null“上发布通知”Toast消息。我正在运行Android API 27。下面是我的代码:

public class UAAutoPilot extends Autopilot {

@Override
public void onAirshipReady(@NonNull UAirship airship) {
    airship.getPushManager().setUserNotificationsEnabled(true);

    // Android O
    if (Build.VERSION.SDK_INT >= 26) {
        Context context = UAirship.getApplicationContext();
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);


        NotificationChannel channel = new NotificationChannel("customChannel",
                context.getString(R.string.custom_channel),
                        NotificationManager.IMPORTANCE_DEFAULT);

        notificationManager.createNotificationChannel(channel);

    }
    // Create a customized default notification factory
    CustomNotificationFactory notificationFactory;
    notificationFactory = new CustomNotificationFactory(UAirship.getApplicationContext());

    // Set the factory on the PushManager
    airship.getPushManager()
            .setNotificationFactory(notificationFactory);


    airship.getPushManager()
            .getNotificationFactory()
            .setNotificationChannel("customChannel");

}

}

Logcat消息

共有1个答案

胡意致
2023-03-14

问题是我没有正确设置通知生成器。

public class CustomNotificationFactory extends NotificationFactory {

Context context;
String channelID = "";

public CustomNotificationFactory(Context context, String channelID) {
    super(context);
    this.context = context;
    this.channelID = channelID;
}

@Override
public Notification createNotification(PushMessage message, int notificationId) {
    // do not display a notification if there is not an alert
    if (UAStringUtil.isEmpty(message.getAlert())) {
        return null;
    }

    // Build the notification
    NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext(),channelID) //wasn't sending in channelID here.  
            .setContentTitle(context.getResources().getString(R.string.notification_title))
            .setContentText(message.getAlert())
            .setAutoCancel(true)
            .setSmallIcon(R.drawable.ic_notification);

    // Notification action buttons
    builder.extend(new ActionsNotificationExtender(getContext(), message, notificationId));

    return builder.build();
}

@Override
public int getNextId(PushMessage pushMessage) {
    return NotificationIdGenerator.nextID();
}


@Override
public boolean requiresLongRunningTask(PushMessage message) {
    return false;
}

}
 类似资料:
  • 我有一个React原生应用程序(在iOS上测试),正在尝试合并推送通知。我正在使用以下模块:https://www.npmjs.com/package/react-native-firebase-push-notifications. 我尝试运行示例应用程序代码,并能够获得(1)消息令牌和(2)从我的设备成功获得权限。 我正在尝试从Firebase发送测试通知,并且正在使用我设备的令牌。但是,触发

  • 我认为通过使用,我可以捕获请求正文,但事实是它什么也没有捕获。如果我理解正确,我应该收到一个结构在这里详细说明的变更资源。是我做错了什么,还是我理解错了?我很感激任何可以给予的洞察力和提前感谢!

  • 消息“成功订阅到广播频道。”在应用程序启动时打印。但是当我使用parse.com上的“发送推送通知”功能时,我的手机没有收到任何推送通知。 为什么不起作用?

  • 我看过这个问题。我有完全相同的问题,但我有来自Thawte的有效ssl证书。我只使用id、type和address属性进行了观察请求,如这里所述。我的address属性类似于 我甚至没有收到同步消息。会出什么问题?

  • 我正在使用Delphi XE7。我有一个Android移动应用程序,接收推送通知。有时,我有十个或更多的顶栏推送图标通知。当用户只点击一个通知图标时,我想让所有通知显示到我的应用程序中。 我执行了下一个过程来捕获所有这些消息,但不起作用,因为它只捕获单击的推送消息。 有人能帮我解决这个问题吗? 问候,路易斯

  • 我试图在我正在开发的Cordova应用程序中获得推送通知。它们在Android应用程序中工作得很好,在iOS应用程序中,当应用程序处于前台时,它们也工作得很好,但当应用程序处于后台或终止时,我不会收到任何通知。 我启用了“推送通知”和“后台模式-远程通知”功能: 我100%肯定服务器有设备令牌(因为推送通知在前台工作,我可以在数据库中看到它)。 如果我在应用程序应该收到通知后启动它或将它带到前台,