Lösung: Binden Sie das Klickereignis an die Audiokomponente und lösen Sie die Wiedergabe- und Pausenmethoden manuell aus! Codeausschnitt: WXML-Datei <!-- Es handelt sich um einen Sprachanruf, es liegt ein Anrufprotokoll vor und die Anrufbeschreibung enthält nicht „verpasst“ --> <Ansichtsklasse="Referenz" wx:if="{{itemList.activity_type === 'phone' && itemList.activity_reference_id && tool.indexOf(itemList.comment,'missed') === -1 }}"> <!-- Sprachwiedergabe--> <van-button class="ref-btn" wx:if="{{audioResourceMaps[itemList.activity_reference_id] === undefiniert}}" wird geladen="{{itemList.activity_reference_id === currentGettingReferenceId}}" Symbol="abspielen" Typ="info" einfach Datenreferenz-ID = "{{itemList.activity_reference_id}}" bindtap = "getReference"> </van-button> <Ansicht wx:sonst Klasse="Audio-Box"> <!-- Sprachwiedergabe pausieren --> <van-button class="ref-btn" wx:if="{{audioResourceMaps[itemList.activity_reference_id]}}" Datenreferenz-ID = "{{itemList.activity_reference_id}}" icon="pause" type="info" plain bindtap="pauseAudio"/> <!-- Klicken Sie auf „Keine Anrufaufzeichnung“--> <span wx:else class="no-audio-text">Keine Anrufaufzeichnung gefunden</span> </Ansicht> </Ansicht> WXSS-Datei .Referenz { Rand oben: 20rpx; Höhe: 100%; Polsterung: 5rpx; Box-Größe: Rahmenbox; } .ref-btn { Breite: 80rpx; Höhe: 80rpx; Anzeige: Flex; } .ref-btn-Schaltfläche { Breite: 80rpx; Höhe: 80rpx; Randradius: 50 %; } js-Datei /** * Ausgangsdaten der Komponente */ Daten: { currentGettingReferenceId: null, //Die aktuell abgespielte Audio-ID audioResourceMaps: {}, //Liste der angeklickten Audios isPause:false, //Pause oder nicht}, /** * Komponentenlebenszyklus */ Lebensdauern: angehängt: Funktion () { // Da es sich um eine Unterkomponente handelt, müssen Sie die Instanz hier abrufen: this.audioContext = wx.createInnerAudioContext(); }, getrennt: Funktion () { // Wiedergabe von this.stopAudio() beenden // Wird ausgeführt, wenn die Komponenteninstanz aus dem Seitenknotenbaum entfernt wird}, }, Methoden: { // Die Aufnahme abrufen getReference(e) { let id = e.target.dataset.referenceId wenn(id != diese.Daten.currentGettingReferenceId){ dies.stopAudio() } dies.setData({ aktuelleGettingReferenceId:id }) // Klicken Sie auf die Schnittstelle, um die Aufzeichnungs-URL zu erhalten. Die Schnittstellenanforderung wird gemäß der eigenen Kapselung WXAPI.getResourceUrl ( geschrieben. `/Gespräch/Gesprächssitzung/${id}/`, { Datentyp: "alle", }).then(({resource_url}) => { console.log('Audioadresse ====',Ressourcen-URL,) let url = resource_url && resource_url.indexOf('https://') > -1? encodeURI(resource_url) : null diese.data.audioResourceMaps[id] = URL; wenn(Ressourcen-URL) dies.playAudio(ID,URL) dies.setData({ audioResourceMaps: this.data.audioResourceMaps }) console.log('Abgespielte Liste =====',this.data.audioResourceMaps) }).fangen(Funktion (e) { console.log(e) }) }, // Pause pauseAudio(){ dies.setData({ istPause: !this.data.isPause }) let id = diese.Daten.currentGettingReferenceId console.log(id,'Wiedergabe pausiert ID') const innerAudioContext = dieser.audioContext wenn(diese.Daten.istPause){ innerAudioContext.pause() console.log('Wiedergabe pausieren') }anders{ innerAudioContext.play() console.log('Weiterspielen') } }, // Wiedergabe beenden stopAudio(){ const innerAudioContext = dieser.audioContext innerAudioContext.stop() let obj = this.data.audioResourceMaps für (let item in obj) { Objekt [Element] löschen } // Um die Wiedergabe zu stoppen, löschen Sie die Audioadresse, die der Playlist-ID entspricht this.setData({ audioResourceMaps: obj, currentGettingReferenceId:null }) console.log('Abspielen beenden') }, // Abspielen playAudio(id,url) { const innerAudioContext = dieser.audioContext console.log(URL, „Audioadresse“) wenn(URL){ innerAudioContext.src = URL innerAudioContext.play() innerAudioContext.onPlay(() => { console.log('Starten Sie die Wiedergabe') }) innerAudioContext.onTimeUpdate(() => { console.log(innerAudioContext.duration,'Gesamtdauer') console.log(innerAudioContext.currentTime,'Aktueller Wiedergabefortschritt') }) setzeTimeout(() => { console.log(innerAudioContext.duration,'Gesamtdauer') console.log(innerAudioContext.currentTime,'Aktueller Wiedergabefortschritt') }, 500) innerAudioContext.onEnded(() => { let obj = this.data.audioResourceMaps für (let item in obj) { Objekt [Element] löschen } dies.setData({ audioResourceMaps: obj, currentGettingReferenceId:null }) console.log('Wiedergabe abgeschlossen') }) innerAudioContext.onError((res) => { console.log(res.errMsg) console.log(res.errCode) }) } } Rendern ⚠️Um vant im WeChat-Applet zu verwenden, müssen Sie in der JSON-Datei darauf verweisen, sonst wird das Tag nicht angezeigt Ich habe es in der Datei app.json zitiert und es ist global verfügbar "Komponenten verwenden": { "van-button": "@vant/weapp/button/index", "van-icon": "@vant/weapp/icon/index", } Offizielle Website-Dokumentation: developers.weixin.qq.com/miniprogram… Zusammenfassen Dies ist das Ende dieses Artikels zur Lösung des Problems, dass die Audiokomponente des WeChat-Miniprogramms auf der iOS-Seite nicht abgespielt werden kann. Weitere relevante Inhalte zur Wiedergabe der Audiokomponente des Miniprogramms auf der iOS-Seite finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Ein seltener Fehler und eine Lösung für die vollständige SQL Server-Sicherung
>>: Grundlegende Schritte zur Verwendung einer Mysql-SSH-Tunnelverbindung
Wenn Sie das Idea-Entwicklungstool zum Debuggen v...
Inhaltsverzeichnis 1. Datenquelle 2. Gesamtrangfo...
Dieser Effekt tritt am häufigsten auf unserer Bro...
Der Unterschied zwischen Ausführen und Starten in...
1. Docker Pull zieht das Image Wenn Sie zum Abruf...
Mit der Array-Deduplizierung wird man häufig bei ...
Standardmäßig unterscheidet MySQL unter Linux zwi...
1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...
1. Umwelt Ubuntu 16.04 läuft auf einer virtuellen...
Gefühle: Ich bin Backend-Entwickler. Manchmal fühl...
Die Lösung lautet wie folgt: 1. Container löschen...
Inhaltsverzeichnis 1. In die Grube fallen 2. Verg...
Erstellen eines zweidimensionalen Arrays in Js: Z...
7 Möglichkeiten, mit CSS ein zweispaltiges Layout...
Allgemeine utf8mb4-Sortierregeln in MySQL sind: u...