① 배운 것
{"aps":
{"alert":"Notification Hub test notification2",
"badge":1,
//이 숫자가 올바른 필요는 없다. 항상 1로 내려줘도 됨.
//이 숫자를 프론트에서 가공해서 쓰는것임.
"sound":"Default"}
}


그런데 XCode에 app group이 포함된 새로운 profiles를 등록할때는 일일이 세팅해주지 않아도 되고 일단 애플디벨로퍼에서 app group이 포함된 profiles를 만들어 놓기만 하고 automatically managing singing을 클릭하면 등록된 profiles 중에 적용 가능한걸 알아서 적용시켜준다.

그리고 만약 앱디스트리뷰션을 사용하고자 한다면, profiles만들때 device를 개발자 device만 선택해서 등록하는게 아니라 앱 디스트리뷰션에서 테스트할 유저들 device도 모두 선택해서 등록해야한다. 그렇지 않으면 앱 디스트리뷰션에서 '기기가 등록되었으며 이제 준비가 끝났습니다. 앱을 테스트할 준비가 되면 이메일이 전송됩니다.'라는 문구가 뜨고 앱을 다운 받을 수 없다.
func resetBadgeCount() {
if let userDefaults = UserDefaults(suiteName: "group.co.a.b") {
userDefaults.set(0, forKey: "badge")
UIApplication.shared.applicationIconBadgeNumber = 0
}
}
override func applicationWillEnterForeground(_ application: UIApplication) {
resetBadgeCount()
}
override func applicationDidBecomeActive(_ application: UIApplication) {
resetBadgeCount()
}
if let userDefaults = UserDefaults(suiteName: "group.co.a.b") {
let badgeCount = userDefaults.integer(forKey: "badge")
if badgeCount > 0 {
userDefaults.set(badgeCount + 1, forKey: "badge")
//서버에서 badge라는 키값으로 준 데이터에 프론트에서 가공한 숫자를 넣어줌
bestAttemptContent!.badge = badgeCount + 1 as NSNumber
} else {
userDefaults.set(1, forKey: "badge")
bestAttemptContent!.badge = 1
}
}
//알림표출
contentHandler(bestAttemptContent!)
if let userDefaults = UserDefaults(suiteName: "group.co.a.b") {
let flavor = Bundle.main.infoDictionary ? ["App Flavor"]
userDefaults.set(flavor, forKey: "flavor")
}
func getImageBaseUrl() -> String {
let urlMap = [
"dev": "dev",
"prod": "prod"
]
if let userDefaults = UserDefaults(suiteName: "group.co.a.b"),
let flavor = userDefaults.string(forKey: "flavor"),
let url = urlMap[flavor] {
return url
}
return ""
}
② 회고 (restropective)
③ 개선을 위한 방법