Lösung für das Problem, dass die Audiokomponente des WeChat-Applets unter iOS nicht abgespielt werden kann.

Lösung für das Problem, dass die Audiokomponente des WeChat-Applets unter iOS nicht abgespielt werden kann.

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:
  • Detaillierte Erläuterung des Beispiels einer Audiokomponente eines WeChat-Applets
  • Beispielfunktion für das WeChat-Applet, das eine Audiokomponente zum Abspielen von Musik verwendet [mit Quellcode-Download]

<<:  Ein seltener Fehler und eine Lösung für die vollständige SQL Server-Sicherung

>>:  Grundlegende Schritte zur Verwendung einer Mysql-SSH-Tunnelverbindung

Artikel empfehlen

Natives JS zum Erzielen eines coolen Paging-Effekts

In diesem Artikel wird anhand eines Beispiels ein...

MySQL 5.7-Bereitstellung und Remotezugriffskonfiguration unter Linux

Vorwort: Vor Kurzem werde ich mit meinen Partnern...

Lösung für zu große Mysql-Binlog-Protokolldateien

Inhaltsverzeichnis 1. Verwandte Binlog-Konfigurat...

MySQL 5.7.20 Zip-Installations-Tutorial

MySQL 5.7.20 Zip-Installation, der spezifische In...

Informationen zum Fallstrickprotokoll der Vue3-Übergangsanimation

Inhaltsverzeichnis Hintergrund Problemort Weitere...

Vue.js Leistungsoptimierung N Tipps (es lohnt sich, sie zu sammeln)

Inhaltsverzeichnis Funktionskomponenten Aufteilun...

HarborRestart-Vorgang nach dem Ändern der Konfigurationsdatei

Ich werde nicht viel Unsinn erzählen, schauen wir...

Entpackte Version der MySQL-Installation und aufgetretene Fehler und Lösungen

1 Installation Laden Sie die entsprechende entpac...

6 Möglichkeiten, die von Linux-Prozessen belegten Portnummern anzuzeigen

Für Linux-Systemadministratoren ist es von entsch...

Wie kompliziert ist die Priorität von CSS-Stilen?

Gestern Abend habe ich mir eine Interviewfrage ang...

Detailliertes Tutorial zur Installation von MariaDB auf CentOS 8

Das Datenbankverwaltungssystem MariaDB ist ein Zw...

Vue implementiert Akkordeoneffekt

In diesem Artikelbeispiel wird der spezifische Co...