2016-02-15 5 views
6

Laut Apple's documentation wird die Sounddatei in den ~/Library/Sounds nach System durchsucht, wenn versucht wird, einen Sound abzuspielen. Wie füge ich eine Sounddatei zu diesem Ordner hinzu?Wie füge ich eine Datei zum Verzeichnis/Library/Sounds des Hauptpakets hinzu?

Ich habe versucht, in den Ordner in Laufzeit zu schreiben, hat aber keine Berechtigung. Ich habe einen Ordner "Library/Sounds" in xcode hinzugefügt, aber es scheint nicht zu kopieren.

enter image description here

Xcode -> Fenster -> Geräte, wählen Sie meine App und Verpackung, Ordner nicht vorhanden sind enter image description here

etwas Kontext hinzuzufügen, ich tue individuellen Sound für Parse-Push-Benachrichtigung. Der Server-Typ hat mir gesagt, dass es bei der Übertragung an viele Benutzer zu schwierig ist, eine benutzerdefinierte Sound-Zeichenfolge in die Payload für jeden Benutzer zu senden. Als Abhilfe versuche ich, eine einzelne Sounddatei zu verwenden, die jedes Mal, wenn der Benutzer einen neuen Sound auswählt, dynamisch überschrieben wird.

Die Sounddatei muss daher vom System automatisch erkannt werden und kann zur Laufzeit von der App geändert werden. Das Hinzufügen der Datei zum Hauptpaket funktioniert nicht, da es schreibgeschützt ist. Ich hoffe, dass eine Datei in ~/Library/Sound bearbeitet werden kann.

Ich habe keine Ahnung, wie Sie an dieser Stelle vorgehen. Jede Hilfe wird sehr geschätzt.

Update: Ich habe versucht, falsch ein Verzeichnis zur Laufzeit zu erstellen, indem

mit
 try fileManager.createDirectoryAtPath("Library/Sounds", withIntermediateDirectories: true, attributes: nil) 

Der richtige Code

 let libraryDir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.LibraryDirectory, NSSearchPathDomainMask.UserDomainMask, true) 
     let directoryPath = "\(libraryDir.first!)/Sounds" 
     try fileManager.createDirectoryAtPath(directoryPath, withIntermediateDirectories: true, attributes: nil) 

My solution to the custom sound problem.

+0

für alle erneuerbaren/editierbare Ressourcen sollten Sie Cache-Ordner – sage444

+0

Das Problem wird Tondatei im Cache-Ordner verwenden, wird nicht von Apple für Push-Benachrichtigung Ton erkannt wird – Cymric

Antwort

4

der Link ist für Mac! Das korrekte Dokument für iOS sollte here

zusammenfassend sein, Sie können einfach die Sounddatei zu Ihrem Projekt als nicht lokalisierte Ressource des App-Bundle hinzufügen.

+0

Danke für die Korrektur Allen. Das direkte Hinzufügen der Datei zum Hauptpaket funktioniert nicht, da die Datei nicht bearbeitet werden kann. Die Webseite, die Sie Zustand verknüpfen, die Library/Ordner des Datencontainers Sounds wird auch durch die automatischen Apfel nachgewiesen werden, und ich hoffe, dass Dateien in diesem Verzeichnis bearbeitet werden. Daher frage ich mich, wie man eine Datei zu diesem Verzeichnis hinzufügen kann. Ich werde eine Antwort als korrekt markieren, auch wenn eine Datei in Library/Sound nicht editierbar ist, solange mir jemand sagen kann, wie es geht. – Cymric

+0

@Cymric, wenn Sie für die Erstellung von Dateien in Laufzeit in der Bibliothek suchen, dann sollten Sie diese SO Post buchen: http://stackoverflow.com/questions/27216189/files-disappearing-from-nslibrarydirectory – Allen

+0

fand ich heraus, was ich falsch gemacht habe, wenn sie von dieser Frage Verzeichnis in der Bibliothek zu schaffen, das ist es für den Hinweis für mich – Cymric

0

ich genau das gleiche Problem hatte sein sollte Arbeit. Ich würde vorschlagen -

  1. Haben Sie mehrere Sounddateien in Ihrem Projekt.
  2. Persisten Benutzer Sound Auswahl.
  3. Wenn Sie Push-Benachrichtigung erhalten, spielen den Ton mit, was Sie in Schritt fort 2.
+0

Der Ton vom Gerät wiedergegeben wird durch die Zeichenfolge gesteuert Wenn die Push-Benachrichtigungs-Payload beispielsweise den Sound1.caf-Server sendet, kann die App keine Sound2.caf-Datei abspielen. Wie in meiner Frage angegeben, kann der Server unterschiedliche Sound-String nicht an verschiedene Benutzer senden. – Cymric

+0

Sie sagen, dass es durch die Zeichenfolge in der Push-Notification-Payload "kontrolliert" wird.Der Server kann jedoch unterschiedliche Sound-Strings nicht an verschiedene Benutzer senden. Also, wie wird es durch die Zeichenfolge in der Push-Notification Payload gesteuert? Warum haben Sie nicht mehrere Sounds-Dateien und haben einige Logik auf der Client-Seite, die den Sound spielen würde. Warum möchten Sie Dateien bearbeiten? –

+0

Wenn das Telefon eine Remote-Push-Benachrichtigung erhalten, suchen Sie das Betriebssystem automatisch für die Sounddatei in die Nutzlast des Benachrichtigung angeben und abspielen. Die App kann diesen Prozess nicht ändern. Die App wird möglicherweise nicht einmal ausgeführt, wenn die Benachrichtigung eintrifft. – Cymric

1

Ich kämpfte auch damit. Sie müssen das Verzeichnis Library/Sounds programmgesteuert erstellen und Ihren benutzerdefinierten Sound dorthin verschieben.

let soundsDirectoryURL = fileManager.urls(for: .libraryDirectory, in: .userDomainMask).first!.appendingPathComponent("Sounds") 

//attempt to create the folder 
do { 
    try fileManager.createDirectory(atPath: soundsDirectoryURL.path, 
            withIntermediateDirectories: true, attributes: nil) 
} catch let error as NSError { 
    print("Error: \(error.localizedDescription)") 
} 
Verwandte Themen