データベースにアクティブなユーザーのみを記録したいと考えていて、アプリが終了した時にデータベースから削除するコードを書きました。下のコードではサーバーからデートを受け取っていますが、これは終了を通知するだけの関数なので本来は必要ありません。
applicationWillTerminateの中にidをキーとしてURLリクエストを送る関数を書きましたが、これは悪い方法だとわかりました。実際、リクエストURLは正しく作成されているのにサーバーサイドのSQL文は動作しませんでした。アプリを起動しているユーザーをサーバーが識別する方法はありませんか?ご教示願います。
環境 swift4, mySQL, PHP7
swift
1func applicationWillTerminate(_ application: UIApplication) { 2 appExitRequest() 3} 4 5func appExitRequest() { 6 let settings = UserDefaults.standard 7 let id = settings.string(forKey: myId) 8 9 guard let myId = id?.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { 10 return 11 } 12 13 14 guard let req_url = URL(string: "http://localhost/test.php/terminate?myId=(myId)") else { 15 return 16 } 17 print(req_url) 18 let req = URLRequest(url: req_url) 19 let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue.main) 20 let task = session.dataTask(with: req, completionHandler: { 21 (data, response, error) in 22 session.finishTasksAndInvalidate() 23 do { 24 print("OK", data ?? "Empty") 25 } catch { 26 print("Failure", error) 27 } 28 }) 29 task.resume() 30}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/11 11:15