如何在Delphi Rio10.3.2中添加和删除Android通知通道

时间:2019-08-27 08:21:40

标签: android delphi firebase-cloud-messaging firemonkey

我想在FMX项目上为Android实现多个通知渠道。

RAD 10.3.2现在为API> = 26提供了一些支持,并且会自动创建一个“后备”通知通道。它的默认描述是“ Firebase的通知渠道”,我想更改此描述以及添加一些新渠道。

在RAD 10.3.2中,新的Options / Application / Services参数提供了一个“默认本地通知通道ID”,我想是可以用来更改存储在{{1中的fcm_fallback_notification_channel_label }}文件是在构建或部署应用程序时生成的。

但是,当我在此字段中编写类似“信息”的ID时,这对生成的Strings.xml文件内容没有影响。
因此,我已将Strings.xml文件复制到另一个目录中,对其进行手动编辑并修改了部署,以便使用此文件而不是自动文件。
如果我卸载该应用程序并使用更改的频道说明重新安装它,则此方法有效。现在,最终用户可能会看到正确的频道名称。

但是,我仍然只有一个频道,而且我不知道如何添加更多频道。
我搜索了Android支持,发现应该在应用程序的起始代码中通过Strings.xml添加频道。
但是,我发现无法在TPushService或TPushServiceConnection中访问这些方法。 Delphi中是否有添加和删除通知渠道的“标准”方式?

1 个答案:

答案 0 :(得分:0)


感谢embarcadero的支持,我得到了一个完整的答案。 用于创建和删除通知通道的Androïd方法位于TNotificationCenter对象中,该对象创建用于拦截设备令牌以及在应用程序运行时收到的通知。
可以使用以下方法:

function CreateChannel: TChannel; overload;
function CreateChannel(const AId: string; const ATitle: string; const ADescription: string = ''): TChannel; overload;
procedure CreateOrUpdateChannel(const AChannel: TChannel);
procedure DeleteChannel(const AChannelId: string);
procedure GetAllChannels(const AChannels: TChannels);

当我使用CreateOrUpdateChannel创建通知频道时,只需在Default local notification channel id的{​​{1}}中写入其ID,即可指定将其用作备用频道的通知频道projet参数。

在以下情况下,默认的后备通知通道仅由Delphi / C ++ Android堆栈创建:

  • 应用程序收到未设置Project > Options... > Application > Services键的push notification payload,并且您尚未设置默认的gcm.notification.android_channel_id
  • 应用程序收到未设置notification channel id键的push notification payload,您已经设置了默认的gcm.notification.android_channel_id,但是尚未在代码中创建默认的notification channel id
  • 应用程序收到一个notification channel,它设置了push notification payload键,尚未在代码中创建gcm.notification.android_channel_id,并且您还没有设置默认的notification channel
  • 应用程序收到一个notification channel id并设置了push notification payload键,表明尚未在代码中创建gcm.notification.android_channel_id,您已经设置了默认值notification channel,但是默认值尚未在代码中创建notification channel id