Я изучаю возможность загрузки журнала сбоев в HockeyApp, но журнал сбоев не отображается на панели консоли HockeyApp.
Формат журнала сбоев копируется из их демонстрационного кода на их веб-сайте как таковой, с модификациями Package
и CrashReporter Key
:
Package: //Bundle ID as shown on HockeyApp console
Version: 1.3
OS: Mac OS X 10.14.2 (18C54)
Manufacturer: Apple
Model: MacBookPro12,1
Date: Wed Apr 24 15:35:08 GMT+08:00 2019
CrashReporter Key: //Incident key generated in the crash log
java.lang.RuntimeException: Unable to start activity ComponentInfo\{de.codenauts.hockeyapp/de.codenauts.hockeyapp.MainActivity\}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
at android.app.ActivityThread.access$2400(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
...
Этот пост предполагает, что поле date
может быть неправильным, но я внес коррективы изДемо-код, поэтому я думаю, что все должно быть в порядке.
В этом посте также предлагается проверить поле версии.Версии, доступные в HockeyApp, как показано здесь, и я нацеливаюсь на версию 1.3:
Я пробовал 1.3
, 1.3(3)
, 3
, но все непохоже, не работает.
Мой запрос POST возвращает statusCode
из 201 созданного, поэтому я полагаю, что сетевой запрос выполнен успешно.Я что-то упустил?
РЕДАКТИРОВАТЬ: функция POST
Это функция POST, которую я использую для загрузки пользовательского отчета о сбое.
func postLog(filename: String) {
let urlString = "https://rink.hockeyapp.net/api/2/apps/APP_ID/crashes/upload"
guard let url = URL(string: urlString) else {return}
guard let filepath = Bundle.main.url(forResource: filename, withExtension: nil) else {
print("Filepath nil")
return
}
let fileData = NSData(contentsOf: filepath)
var request = URLRequest(url: url)
request.httpMethod = "POST"
let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.httpBody = createBody(parameters: [:], boundary: boundary, data: fileData! as Data, mimeType: "text/plain", filename: filename)
let dataTask = session.dataTask(with: request) { (data, response, error) in
if let error = error {
print(error.localizedDescription)
return
}
if let response = response {
print(response)
}
}
dataTask.resume()
}