首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

[expo-通知][托管工作流][EAS构建][Android]自定义声音在本地计划的通知中不播放

基础概念

在移动应用开发中,通知是向用户传达信息的重要方式之一。Expo 是一个用于构建 React Native 应用的开源工具,它提供了丰富的功能来简化开发过程,包括通知功能。EAS(Expo Application Services)是 Expo 提供的用于管理应用发布和构建的服务。

相关优势

  1. 简化开发流程:Expo 提供了许多现成的 API 和工具,减少了开发者需要编写的代码量。
  2. 跨平台支持:Expo 支持 iOS 和 Android 平台,开发者可以使用相同的代码库来构建两个平台的应用。
  3. 快速迭代:EAS 构建服务可以快速地生成应用包,便于开发者进行测试和发布。

类型

通知可以分为本地通知和远程通知。本地通知是由应用本身触发的,而远程通知是由服务器触发的。

应用场景

本地通知常用于提醒用户即将到来的事件、任务完成、新消息等。

问题分析

在 Expo 中,自定义声音在本地计划的通知中不播放可能是由以下几个原因导致的:

  1. 声音文件路径错误:确保声音文件的路径是正确的,并且文件已经正确地添加到项目中。
  2. 权限问题:确保应用有权限访问存储和播放声音文件。
  3. 通知配置错误:确保在创建通知时正确配置了声音文件。

解决方法

以下是一个示例代码,展示如何在 Expo 中配置本地通知并播放自定义声音:

代码语言:txt
复制
import * as Notifications from 'expo-notifications';

// 配置通知渠道
const notificationChannel = {
  name: 'CustomSoundChannel',
  importance: Notifications.Importance.MAX,
  sound: require('./assets/sound.mp3'), // 确保路径正确
};

Notifications.setNotificationChannelAsync('custom-sound-channel', notificationChannel);

// 创建通知
const createNotification = async () => {
  const notificationContent = {
    title: 'Custom Sound Notification',
    body: 'This is a notification with custom sound.',
    data: { data: 'goes here' },
  };

  await Notifications.scheduleNotificationAsync({
    content: notificationContent,
    trigger: null, // 立即触发
  });
};

// 调用创建通知函数
createNotification();

参考链接

其他注意事项

  1. 权限配置:确保在 app.jsonapp.config.js 中配置了正确的权限,例如:
代码语言:txt
复制
{
  "expo": {
    "android": {
      "permissions": ["DEFAULT_SOUND"]
    }
  }
}
  1. 声音文件格式:确保声音文件是支持的格式(如 .mp3.ogg),并且文件大小不超过 10MB。

通过以上步骤,你应该能够解决自定义声音在本地计划的通知中不播放的问题。如果问题仍然存在,建议检查控制台日志以获取更多详细信息,并参考 Expo 官方文档进行进一步的调试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 5.0 API新增和改进

声音和振动 如果您当前在使用 Ringtone、MediaPlayer 或 Vibrator 类为通知添加声音和振动,请移除该代码,这样系统才能以优先模式正常呈现通知。...如果通知不包含个人信息,或者您希望在通知中显示媒体播放控件,请调用 setVisibility() 方法,并将通知的公开程度的级别设置为 VISIBILITY_PUBLIC。...媒体播放 如果您要实施可呈现媒体播放状态或传输控件的通知,请考虑使用新的 Notification.MediaStyle 模板,而不是自定义RemoteViews.RemoteView 对象。...对于 MediaSession 或 RemoteControlClient,Android 5.0 中的锁定屏幕不会显示传输控件。相反,您的应用可以通过通知在锁定屏幕中提供媒体播放控件。...Notification.MediaStyle 将您通过Notification.Builder.addAction() 添加的通知操作转换到在您应用的媒体播放通知中内嵌的紧凑型按钮中。

1.7K20

Android 8.0 功能和 API(翻译自Google官网)

用户体验 通知 在 Android 8.0 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。...这些变更包括: 通知渠道:Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将通知渠道称之为通知类别。...自定义数据存储 Android 8.0 允许您为首选项提供自定义数据存储,如果您的应用将首选项存储在云或本地数据库中,或者如果首选项特定于某个设备,此功能会非常有用。...音频播放控制 Android 8.0 允许您查询和请求设备产生声音的方式。对音频播放的以下控制将让您的服务更轻松地仅在有利的设备条件下产生声音。...重要功能包括如下: 完全托管的设备中的工作资料使企业可以在管理工作数据与个人数据的同时,将它们分离开来。 API 委派允许设备所有者和个人资料所有者将应用管理分配给其他应用。

2.9K30
  • React Native 常用的 15 个库

    React Native Push Notification 这个库支持本地推送通知功能比较全面。它具有日程通知、基于日、周、时间的重复通知等其他库中没有的功能。...这个库还支持带有调度和重复支持的本地通知。...React Native Sound 你需要在应用中播放声音或音乐的库。 我使用这个库来播放应用程序声音并播放录制的答案。...一个简单但非常有用的组件。当你希望阻止用户在处理某些内容时执行任何其他操作时,你可以使用此组件。 通过在 Android 中处理后退按钮,该组件也做得很好。 示例:提交帖子 9....React Native Modalbox 这个 Modal 库是基于 React Native 的 Modal组件构建的,但附带了许多自定义和功能。

    5.9K31

    Android通知Notification使用全解析,看这篇就够了

    1、效果 image.png image.png 2、简介 通知是 Android 在您的应用 UI 之外显示的消息,用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。...用户可以向下拖动抽屉中的通知以显示展开的视图,该视图显示其他内容和操作按钮(如果提供)。 通知在通知抽屉中保持可见,直到被应用程序或用户关闭。...在Android10.0及以上,系统也会默认识别并添加一些操作,比如短信通知上的「复制验证码」。...4.2.2、重要性等级 紧急:发出声音并显示为提醒通知 高:发出声音 中:没有声音 低:无声音且不出现在状态栏中 4.3、进度条通知 private fun createNotificationForProgress...当前应用的通知不超过3条,会展开 超过3条,通知会聚合并折叠 4.7、自定义通知 private fun createNotificationForCustom() { //

    6.1K30

    2020年务必要了解的最好用的14款CICD工具

    Jenkins主要功能: 易于在各种操作系统上安装和升级 简单易用的界面 可通过社区提供的巨大插件资源进行扩展 在用户界面中轻松配置环境 支持主从架构的分布式构建 根据表达式构建时间表 在预构建步骤中支持...高度可定制 自动合并和自定义命令以上传软件包 快速设置和无限构建 许可:Linux计划从选择不运行任何并行操作开始。...Git,Mercurial,SVN Repos中检测新分支,并将主线的CI方案自动应用于它们 触发器基于在存储库中检测到的更改构建。...它提供了在GitLab或您的本地实例和/或公共云上托管SaaS的功能。 主页:https://about.gitlab.com/ Buddy ?...的Docker集成以构建最少的容器并使尺寸可管理 Walterbot – Wercker中的聊天机器人–允许您与通知交互以更新构建状态 环境变量有助于使敏感信息远离存储库 Wercker利用关键安全功能

    5.6K11

    iOS15适配本地通知功能及语音播报探索

    利用Service Extension,在收到服务端的推送的时候,按照顺序发送本地通知 本地通知的sound就是对应的音频拆分 将收到的推送的sound设置为nil,避免打断本地推送的语音播报。...设置本地通知不弹出横幅(iOS15失效了无法设置) title和body都设置为空,或者注册通知的时候不启用UNAuthorizationOptionAlert,还要注意的是拓展里面需要设置一下本地化...但是在iOS15如果body为空,将无法播放声音。...) 扩展在收到通知之后 -> 合成音频 -> 存储到扩展的对应路径 -> 扩展自己给自己发一个本地通知那个通知的sound设置成合成文件 iOS15之前的实现思路: 将你想要播放的音频拆分,放到主程序的包里...利用Service Extension,在收到服务端的推送的时候,按照顺序发送本地通知 本地通知的sound就是对应的音频拆分 问题:iOS12.1之后利用本地推送实现消息的语音播报,在iOS15 没有声音

    3.5K30

    JPush相关概念

    消息形式 JPush提供四种消息形式:通知,自定义消息,富媒体和本地通知。 通知 或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。...本地通知 本地通知API不依赖于网络,无网条件下依旧可以触发;本地通知的定时时间是自发送时算起的,不受中间关机等操作的影响。 本地通知与网络推送的通知是相互独立的,不受保留最近通知条数上限的限制。...本地通知适用于在特定时间发出的通知,如一些Todo和闹钟类的应用,在每周、每月固定时间提醒用户回到应用查看任务。...支持字符串形式也支持官方定义的alert payload 结构 sound string 可选 通知提示声音 如果无此字段,则此消息无声音提示;有此字段,如果找到了指定的声音就播放该声音,否则播放默认声音...设置APNs payload中的"category"字段值 extras JSON Object 可选 附加字段 这里自定义 Key/value 信息,以供业务使用。

    90220

    理解音频焦点 (第 23 部分):更多的音频焦点用例

    您的应用处理了音频焦点的情况下: 在 Android O 中,有一个应对诸如本用例的音频焦点的功能,叫做延迟音频聚焦。 假如当用户在通话中打开游戏,他们想玩游戏,不想听到游戏声音。...如果您的应用支持延迟音频聚焦,会发生如下情况: 当您的应用申请音频焦点的时候,会被拒绝并锁住,通话应用继续持有音频焦点,您的应用因此不播放音频。因为您的应用是游戏,可以正常继续操作,只是没有声音。...您可以像上文建议应对音频焦点得失的处理方式那样处理,在本例中,此时便可以开始恢复播放。...类似的应用程序功能如:生成通知声音,提醒声音或一次又一次地在后台生成口语播放的应用程序。 假设您的应用正在后台运行,并且即将生成一些音频。...用例四 :录音应用程序或语音识别应用程序 如果您正在开发一款需要在一段时间内录制音频的应用程序,在这段时间内系统或其他应用程序不应该发出任何声音(通知或其他媒体播放),这时处理好音频焦点对于提供良好的用户体验至关重要

    2.3K20

    android的消息通知栏

    在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等。...注意: Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout...所以开发过程中尽量使用NotificationCompat.Builder(this)的构建方法去创建一个通知类。...4.低版本中,自定义的通知栏中如果带有按钮,可能按钮点击事件会失灵 解决方法:看其它的应用,好像在低版本都会隐藏掉那些按钮,就是为了不影响用户体验,所以应该就这么解决,判断版本号在去决定是否现在按钮。...android:attr/textColorPrimary 在资源的src/values目录中的style.xml文件中设置它标题和内容的样式为: <?

    4.1K80

    React Native推送通知:完整的操作指南

    ,通过一个托管的中间推送通知服务器,正如你在之前显示的图表中看到的那样。...你可以直接使用 FCM/APNs 或者使用这些库的托管推送通知服务。然而,请记住,我们必须在 Expo 中使用裸工作流来使用这些库,因为这些库不包含在 Expo 应用程序中。...使用Expo发送本地通知 在某些情况下,开发者不需要远程服务器来发送通知。一个例子可以是音乐播放器,当一首歌曲正在播放时,应用需要显示一个通知。 在某些情况下,开发者不需要远程服务器来发送通知。...通过 style 属性进行自定义样式:开发者现在可以在通知中嵌入图片和大量文本 基于触发器的消息:如果满足某个条件,允许应用程序发送通知 易于使用的交互API:顾名思义,这使得用户可以通过按钮或文本字段与通知进行交互...Yes No 最佳使用案例 简单通知 复杂通知 如果你想优先考虑效率并且只需要简单的本地和远程通知,Expo是理想的选择。然而,对于更自定义或复杂的通知,你可以考虑使用Notifee。

    1.4K10

    它来了,它带着GitHub App来了!

    GitHub Mobile 应用支持在 iPhone/iPad 和 Android 手机完成一些快速工作,比如 Review 代码、评论、Merge PR、查看通知、搜索代码等。 终于来了!兴奋吧?...上介绍了Actions,并分享了一些计划,以使Actions可以在今年夏天全面上市,并提供持续集成支持。...GitHub Package Registry 于今年春季以有限的Beta版本首次亮相。 自托管的运行程序也将普遍用于操作,因此企业客户可以在自己的服务器上托管操作。...GitHub高级产品经理Devon Zuegel说: “有了GitHub赞助商,开发人员可以直接从他们的日常工作流程中相互赞助。” Git是什么? Git是目前世界上最先进的分布式版本控制系统。...5、离线工作,不影响本地代码编写,等有网络连接以后可以再上传代码,并且在本地可以根据不同的需要,本地新建自己的分支。

    63330

    12306 抢票小助手: 完整易用的抢票解决方案 | 开源日报 0917

    其目标是提供构建更高级别加密工具所需的所有核心操作。...该项目提供了托管应用、本地运行和实验等功能。主要特点包括: 实验:使用代码模板进行广泛测试。 无缝翻译不同模型 API 之间的提示。 利用自动生成场景来获取新鲜的测试视角。...微调 (Beta 版):在 Python 和 JS 中轻松集成 OpenPipe SDK,并通过直观内置过滤器快速查询日志。...该框架提供了一系列基本构建块,可以轻松地创建包括聊天室等基本环境,并且支持定制化组件和工具插件。核心优势如下: 高效的环境搭建:通过配置文件中几行代码即可快速构造基础环境。...桌面通知:收到新消息时会弹出桌面通知,并可选择是否播放声音提醒 邀请链接 - 共享邀请链接,就像 WhatsApp,Signal 或 Discord 一样。

    1.1K30

    个推消息推送模板详解

    8手机 Android 9版本为例,推送效果如下(为了脱敏,直接用个推demo自带的图标) 上述代码中提到了安卓8.0系统中开始支持的通知渠道,具体的字段含义解释如下。...具体操作过程中值有五种可供选择:0、1、2、3、4;设置之后不能修改,展示形式如下: 0:无声音,无震动,不显示。 1:无声音,无震动,锁屏不显示,通知栏中内容被折叠显示,导航栏无logo。...2:无声音,无震动,锁屏和通知栏都予以显示,通知不唤醒屏幕。 3:有声音,有震动,锁屏和通知栏中都予以显示,通知唤醒屏幕。 4:有声音,有震动,亮屏下通知悬浮展示,锁屏通知以默认形式展示且唤醒屏幕。...()); // 字典模式 // 设置语音播报类型,int类型,0.不可用 1.播放body 2.播放自定义文本 payload.setVoicePlayType(2); //...设置语音播报内容,String类型,非必须参数,用户自定义播放内容,仅在voicePlayMessage=2时生效 // 注:当"定义类型"=2, "定义内容"为空时则忽略不播放 payload.setVoicePlayMessage

    1.9K30

    15个最佳缺陷错误跟踪工具(2024)

    用户可以在Jira中创建任何类型的问题。 第三方集成使项目和问题跟踪更容易。 Jira非常容易使用。 对于小型项目,这是一个很好的工具。 定价: 价格:计划起价每月7.50美元。...它支持本地化的web用户界面。 提供自定义的用户首选项功能。 提供时间跟踪系统。 提供集成的电子邮件系统。 对于小型项目,这是一个很好的工具。 定价: 免费下载。...功能特点: 记录和跟踪错误和问题:你可以使用此工具维护整个项目,跟踪问题和时间,并获得关于错误在工作流中所经历的每一步的通知。...、功能请求和通知平台构建创新解决方案。...支持的平台:Windows和Linux。 优点: 一个简单易用的程序。 无缝Git托管。 使用自定义结构对组织中的问题和任务进行分类。 可以根据需要创建任意多个项目。 定价: 价格:每月19美元起。

    13210

    用新技术 “派生” 的旋律把耳朵叫醒

    QQ 音乐让用户可以根据喜好选择 QQ 音乐默认通知栏样式 (左) 或自定义跟随系统样式 (右) 在国内各类的第三方 Android 系统中,很多应用自身的视觉设计语言可能会和整体系统有所不协调。...Shawn 表示,QQ 音乐在很早的版本已经支持了通知栏样式切换,让用户根据自己的实际喜好进行选择,目前默认使用的是 QQ 音乐自定义通知栏,这个在不同手机上的表现效果是一致的,或者用户可以将其修改成原生系统通知栏样式...而通知栏的 “面子” 变了,不容易看见的通知逻辑其实也在新版本中悄然发生了改变。 ?...QQ 音乐的 Android 开发团队很早就使用了 Android 8 的 Notification Channel 功能,并在适配 Android 9 期间计划逐步将应用内的通知根据重要性进行了不同等级的区分...,同时建立不同的通知渠道,比如最重要的是听歌的通知,其次是类似用户私信的通知,再次是一些活动的相关推送等信息,这些不同等级的内容都有独立的通知渠道,用户可以自定义地去设置是否播放声音和震动,而不是像过去一样简单粗暴地关掉所有通知

    99730

    《移动互联网技术》第八章 消息与服务:掌握不同类型广播监听方式,以及创建通知的方法

    (3) Handler和AsyncTask****工作流程 Handler 在主活动MainActivity中,首先启动一个子线程来完成一些耗时的运算或I/O处理,比如执行大数据运算、下载多个图片文件、...总的来说,如果需要执行耗时的操作,例如从互联网上下载数据,或者在本地读取一个很大的文件时,不能把这些操作放在主线程中,应该在一个子线程中执行耗时任务。...首先,自定义线程类TaskThread,然后重写run函数,并且在主程序中创建TaskThread线程对象,然后调用start函数启动线程。...如果想要取消某个特定的通知,就在cancel 函数中传入该通知的 id号。 通知还有更丰富的形式,比如收到通知的时候,播放一段声音,这样用户就知道有通知消息了。...在定义通知的时候,加入setSound函数,选择手机音频目录下的已有音频文件来播放特定的声音。另外,还可以设置震动方式来提醒用户。

    10510

    引入Jetpack架构后,你的App会发生哪些变化?

    既然生命周期的同步如此重要,Google肯定不会视而不见,虽然自定义ObserverLifecycle可以解决这种问题,但并不是每个人都能想到。...LiveData + Lifecycle 实现 1 + 1 > 2 LiveData在Lifecycle的加持下可以实现只在可见状态接收通知,说的通俗一点Activity执行了onStop()后内部的LiveData...引入Lifecycle后这个问题便可迎刃而解,liveData绑定Lifecycle(例子中的this)后,当回到ActivityA时只会取liveData最新的值然后做通知,从而避免多余的操作引发的性能问题...想要使两个Fragment中播放信息实时同步,最优雅的方式是将播放状态托管在Activity作用域下ViewModel的LiveData中,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,...关于这个问题我在上篇文章Data Mapper章节中描述的很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml中编写业务逻辑的问题

    1K31

    理解音频焦点 (第13部分):常见的音频焦点用例

    本篇文章是该系列的第一部分,该系列三篇文章包含了: 最常见的音频焦点用例和成为一个优秀的媒体事业人员的重要性(此篇文章) 其它一些能体现音频焦点对应用体验的重要性的用例 在您的应用中实现音频焦点的三个步骤...下面是一些音频焦点使用场景(假设用户正在使用您的应用播放音频)。 当您的应用需要播放声音的时候,应该先请求音频聚焦,在获得音频焦点后再播放声音。...您的应用处理了音频焦点的情况下: 在另一个应用需要播放音频时,它会请求音频焦点常驻,即音频永久聚焦。一旦系统授权,它便会开始播放音频,这时候您的应用需要响应音频焦点的丢失通知,停止播放。...但是,在播放过程中可能无法把音频焦点一直据为己有,因为其它应用程序可以发出音频焦点的请求来抢占音频焦点,这种情况下,您的应用可以选择暂停播放或者降低音量,这样用户才能更清晰地听到其它应用程序的音频。...理解音频焦点 (第2/3部分) - Nazmul Idris (Naz) - Medium 想学习怎么在您的应用中实现音频焦点的相关操作,请阅读本系列 第三篇文章(终章)。

    2.3K21

    引入Jetpack架构后,你的App会发生哪些变化?

    既然生命周期的同步如此重要,Google肯定不会视而不见,虽然自定义ObserverLifecycle可以解决这种问题,但并不是每个人都能想到。...2.3 LiveData + Lifecycle 实现 1 + 1 > 2 LiveData在Lifecycle的加持下可以实现只在可见状态接收通知,说的通俗一点Activity执行了onStop()后内部的...比如我的开源项目中的音乐播放器(属于单Activity多Fragment架构),播放页和首页悬浮都包含音乐基本信息,如下图所示: 想要使两个Fragment中播放信息实时同步,最优雅的方式是将播放状态托管在...Activity作用域下ViewModel的LiveData中,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,简单又安全,具体细节可至我的开源项目中查看。...关于这个问题我在上篇文章Data Mapper章节中描述的很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型与设计图一一对应,不但可以将视图与后段隔离,而且可以解决xml中编写业务逻辑的问题

    1.9K80
    领券