iOS 프로젝트 막힘. 절박함. 용자들 도와주세요~~!
안드로이드 앱을 iOS로 포팅하면서 막힌 부분들
FCM을 통해 푸시를 받으면 항상 노티가 뜨는데 특정 UIViewController를 실행 중에는 노티가 뜨지 않도록 하는 방법
FCM을 통해 푸시를 받아서 뜨는 노티 알림을 클릭하면 항상 앱 시작 화면으로 진입하는데 특정 UIViewController로 이동되도록 하는 방법
AlarmoFire로 Node 서버에 Int Array를 전달하는 방법 안드로이드 Retrofit으로는 잘 넘어가는 ios에서는 undefined 임
//ios
func leaveRoom(ids: [Int], completion: @escaping (Bool) -> Void) {
let parameters: [String: Any] = [
"ids": ids
]
Alamofire.request("http://13.112.184.63:3000/sns/message/room",
method: .patch,
parameters: parameters,
encoding: JSONEncoding.default) // URLEncoder.default 도 마찬가지임
.response { response in
if response.error == nil {
completion(true)
} else {
completion(false)
}
}
}
// 서버
router.patch('/message/room', function (req, res, next) {
const ids = req.query.ids; // android 잘 됨. ios는 undefined
snsDao.leaveRoom(ids, function (error, result) {
if (error) {
console.log(ids + '의 채팅방 나가기 실패 : ' + error);
return res
.status(500)
.json({result: 'error'})
}
console.log(ids + '의 채팅방 나가기 성공');
return res
.status(200)
.send();
})
});
// 안드로이드
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'", Locale.KOREA);
inputFormat.setTimeZone(TimeZone.getTimeZone("KST"));
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
try {
Date date = inputFormat.parse(time);
textView.setText(outputFormat.format(date));
} catch (ParseException e) {
textView.setText(time);
}
서버 시간 그대로 표시됨
// ios
// 포맷터
let inputFormat = DateFormatter()
let outputFormat = DateFormatter()
inputFormat.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
inputFormat.timeZone = TimeZone(abbreviation: "KST")
outputFormat.dateFormat = "yyyy-MM-dd HH:mm"
outputFormat.timeZone = TimeZone.current
// 변환 부분
let date = inputFormat.date(from: post.time)
timeLabel.text = outputFormat.string(from: date!)