Я пытаюсь отправить информацию о своей пригодности из моего приложения в strava через файл gpx, созданный в приложении (файл создается и заполняется без проблем).Я провел некоторые исследования, но, похоже, не могу найти правильный ответ, все, что я нашел, - это электронная почта, сообщения или даже сообщения.Когда я запускаю свой код, он возвращает мне файл, но ничего о загрузке файла в strava.Консоль также возвращает мне эту ошибку:
(String) = "Файл" "не существует".swift
Вот что я сделал до сих пор:
func saveWorkout(_ workout: FirebaseWorkout, completion: @escaping (_ success: Bool, _ error: Error?) -> Void) {
let gpxString = workout.getGpx()
do {
let documentsDir = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileURL = documentsDir.appendingPathComponent("workoutData").appendingPathExtension("gpx")
print("File Path: \(fileURL.path)")
try gpxString.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8)
guard let fileData = try? Data(contentsOf: fileURL) else {
workoutTT().analytics("EXPORT_GPX_ERROR")
completion(false, nil)
return
}
let opts: [String: Any?] = [
"file": fileData,
"data_type": "gpx",
"name": workout.name,
"description": workout.notes
]
if self.isAuthorized && userSettings.membership.hasFullAccess {
workoutTT().analyticsEvent(kEventCategoryThirdParty, eventAction: "SAVE_WORKOUT", eventLabel: ThirdPartyApplication.strava.rawValue, eventValue: 1)
workoutTT().debugLog("Strava: Save Workout")
self.refreshTokenIfNeeded {
_ = self.oauthswift.client.post("https://www.strava.com/api/v3/uploads", parameters: opts as OAuthSwift.Parameters, success: { (_) in
workoutTT().debugLog("Strava: Save Workout Success")
completion(true, nil)
}) { (error) in
workoutTT().debugLog("Strava: Save Workout \(error.localizedDescription)")
completion(false, error)
}
}
} else {
completion(false, nil)
}
} catch {
workoutTT().analytics("GPX_CONVERT_CATCH_ERROR", debug: true, timestamp: true, doPrint: true)
// failed to write file – bad permissions, bad filename, missing permissions, or more likely it can't be converted to the encoding
completion(false, nil)
}
}