위젯에서 Bitbank의 자산을 확인할 수 있습니다.
왜 만들려고 생각했는가
가상화폐 좋아하는 친구들로부터 "위젯으로 각 통화의 가격은 확인할 수 있지만 자산을 확인할 수 없는 것은 불편하다"는 목소리가.
점심 1회로 인수되어 만들어 보았다.
↓는 기존 비트뱅크 위젯
확실히 각 동전의 가격은 알지만 자신의 자산 정보는 없다.
만든 것
앱 측에서 보려는 동전과 Bitbank의 PrivateApi를 두드리는 ApiKey, ApiSecret 저장
그것을 위젯으로 표시하는 것
하나의 동전의 자산을보고 싶다고 요청했으므로 이번에는 하나의 동전의 총 자산, 현재 가격을 표시합니다.
Today Extension
iOS에서는 이 위젯을 Today Extension이라고 부른다.
타겟의 추가나 구현 방법 등은 다른 분들도 들고 있으므로 일단 스루
자신이 막힌 곳 중심에 씁니다.
위젯의 크기를 늘리려면
일반적인 표시를 줄이고, 표시를 늘리기를 누르면 퍼지는 것.
TodayViewController.swift override func viewDidLoad() {
super.viewDidLoad()
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}
widgetLargestAvailableDisplayMode를 설정하여 표시를 늘릴 수 있습니다.
TodayViewController.swift func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
}
else {
self.preferredContentSize = CGSize(width: 0, height: 100);
}
}
이렇게 늘릴 때의 높이를 지정.
어느 타이밍에 API를 두드려야 하는가
TodayViewController.swift func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {
completionHandler(NCUpdateResult.newData)
}
위젯이 표시될 때마다 widgetPerformUpdate
가 호출됩니다. (viewDidAppear 좋은 느낌..?)
여기서 API 두드린 결과에 대해서 NCUpdateResult
에 값을 건네준다.
NCUpdateResultNewData - 내용이 바뀌었으므로 뷰를 다시 그릴 필요
NCUpdateResultNoData - 업데이트 필요 없음
NCUpdateResultFailed - 업데이트 처리 중 오류 발생
UserDefaults를 앱간에 공유
이번은 앱 측에서 코인과 API의 정보를 UserDefaults에 저장. 그것을 Today Extension 측에서 읽어 API를 두드릴 필요가 있었다.
Target Capabilities
선택
새 App Groups
를 만들고 두 대상 모두에 해당 앱 그룹을 설정합니다.
이 App Groups로 UserDefaults의 인스턴스를 작성해, 보존, 읽으면 데이터가 공유된다.
let defaults = UserDefaults(suiteName: "group.共通のID")
출시할 때 등은 Apple Developer에서 App Groups를 만들어 ~~ 등 해야 하므로 주의
PrivateAPI를 두드리는 HMAC-SHA256 서명
개인적으로 이번에 가장 막혔다. .
Bitbank의 ProvateAPI를 두드리려면 「UNIXTIME、リクエストのパス、クエリパラメータ」 を連結させたもの
를 API Secret과 함께 HMAC-SHA256으로 서명해야합니다.
이번에는 다음 라이브러리를 사용하십시오.
CryptoSwift
cocoapods
에서 설치
pod 'CryptoSwift'
다음과 같이 서명하여 사용
private func makeAccessSignWith(accessKey: String, unixtime: String, path: String, queryParam: String) -> String? {
let unixTimeStr = self.makeHaederUnixTime(unixTime: unixtime)
let linkedStr = unixTimeStr + path + queryParam
var bytes: [UInt8] = []
bytes += linkedStr.bytes
let signedString = try? HMAC(key: "APISecret", variant: .sha256).authenticate(bytes)
return signedString?.toHexString()
}
그러나 두드리지만 인증 에러가 돌아온다. . .
서명을 작성하는 방법이 잘못되었다고 생각하면 의외의 원인으로 원인 판명
BitBank의 API 문서 페이지에서 자신의 API 키와 API 비밀을 입력하면 실제로 API를 두드리고 확인할 수 있지만 거기의 UNIXTIME
왜 100년 전. . .
이 이상한 UNIXTIME에서 한 번 API를 두드린 것이 원인으로 그 후도 인증 에러가 나온 것 같다.
클라이언트에서 두드릴 때 UNIXTIME에 1000을 곱하여 해결
미래
지금은 하나의 동전 만 표시하고 있으므로 모두 표시하고 자산도 전부 더한 자산으로 하자
Reference
이 문제에 관하여(위젯에서 Bitbank의 자산을 확인할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kohei1218/items/91c4691fd9e1caf6dfde
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
앱 측에서 보려는 동전과 Bitbank의 PrivateApi를 두드리는 ApiKey, ApiSecret 저장
그것을 위젯으로 표시하는 것
하나의 동전의 자산을보고 싶다고 요청했으므로 이번에는 하나의 동전의 총 자산, 현재 가격을 표시합니다.
Today Extension
iOS에서는 이 위젯을 Today Extension이라고 부른다.
타겟의 추가나 구현 방법 등은 다른 분들도 들고 있으므로 일단 스루
자신이 막힌 곳 중심에 씁니다.
위젯의 크기를 늘리려면
일반적인 표시를 줄이고, 표시를 늘리기를 누르면 퍼지는 것.
TodayViewController.swift override func viewDidLoad() {
super.viewDidLoad()
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}
widgetLargestAvailableDisplayMode를 설정하여 표시를 늘릴 수 있습니다.
TodayViewController.swift func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
}
else {
self.preferredContentSize = CGSize(width: 0, height: 100);
}
}
이렇게 늘릴 때의 높이를 지정.
어느 타이밍에 API를 두드려야 하는가
TodayViewController.swift func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {
completionHandler(NCUpdateResult.newData)
}
위젯이 표시될 때마다 widgetPerformUpdate
가 호출됩니다. (viewDidAppear 좋은 느낌..?)
여기서 API 두드린 결과에 대해서 NCUpdateResult
에 값을 건네준다.
NCUpdateResultNewData - 내용이 바뀌었으므로 뷰를 다시 그릴 필요
NCUpdateResultNoData - 업데이트 필요 없음
NCUpdateResultFailed - 업데이트 처리 중 오류 발생
UserDefaults를 앱간에 공유
이번은 앱 측에서 코인과 API의 정보를 UserDefaults에 저장. 그것을 Today Extension 측에서 읽어 API를 두드릴 필요가 있었다.
Target Capabilities
선택
새 App Groups
를 만들고 두 대상 모두에 해당 앱 그룹을 설정합니다.
이 App Groups로 UserDefaults의 인스턴스를 작성해, 보존, 읽으면 데이터가 공유된다.
let defaults = UserDefaults(suiteName: "group.共通のID")
출시할 때 등은 Apple Developer에서 App Groups를 만들어 ~~ 등 해야 하므로 주의
PrivateAPI를 두드리는 HMAC-SHA256 서명
개인적으로 이번에 가장 막혔다. .
Bitbank의 ProvateAPI를 두드리려면 「UNIXTIME、リクエストのパス、クエリパラメータ」 を連結させたもの
를 API Secret과 함께 HMAC-SHA256으로 서명해야합니다.
이번에는 다음 라이브러리를 사용하십시오.
CryptoSwift
cocoapods
에서 설치
pod 'CryptoSwift'
다음과 같이 서명하여 사용
private func makeAccessSignWith(accessKey: String, unixtime: String, path: String, queryParam: String) -> String? {
let unixTimeStr = self.makeHaederUnixTime(unixTime: unixtime)
let linkedStr = unixTimeStr + path + queryParam
var bytes: [UInt8] = []
bytes += linkedStr.bytes
let signedString = try? HMAC(key: "APISecret", variant: .sha256).authenticate(bytes)
return signedString?.toHexString()
}
그러나 두드리지만 인증 에러가 돌아온다. . .
서명을 작성하는 방법이 잘못되었다고 생각하면 의외의 원인으로 원인 판명
BitBank의 API 문서 페이지에서 자신의 API 키와 API 비밀을 입력하면 실제로 API를 두드리고 확인할 수 있지만 거기의 UNIXTIME
왜 100년 전. . .
이 이상한 UNIXTIME에서 한 번 API를 두드린 것이 원인으로 그 후도 인증 에러가 나온 것 같다.
클라이언트에서 두드릴 때 UNIXTIME에 1000을 곱하여 해결
미래
지금은 하나의 동전 만 표시하고 있으므로 모두 표시하고 자산도 전부 더한 자산으로 하자
Reference
이 문제에 관하여(위젯에서 Bitbank의 자산을 확인할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kohei1218/items/91c4691fd9e1caf6dfde
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
override func viewDidLoad() {
super.viewDidLoad()
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
}
else {
self.preferredContentSize = CGSize(width: 0, height: 100);
}
}
func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {
completionHandler(NCUpdateResult.newData)
}
let defaults = UserDefaults(suiteName: "group.共通のID")
개인적으로 이번에 가장 막혔다. .
Bitbank의 ProvateAPI를 두드리려면
「UNIXTIME、リクエストのパス、クエリパラメータ」 を連結させたもの
를 API Secret과 함께 HMAC-SHA256으로 서명해야합니다.이번에는 다음 라이브러리를 사용하십시오.
CryptoSwift
cocoapods
에서 설치pod 'CryptoSwift'
다음과 같이 서명하여 사용
private func makeAccessSignWith(accessKey: String, unixtime: String, path: String, queryParam: String) -> String? {
let unixTimeStr = self.makeHaederUnixTime(unixTime: unixtime)
let linkedStr = unixTimeStr + path + queryParam
var bytes: [UInt8] = []
bytes += linkedStr.bytes
let signedString = try? HMAC(key: "APISecret", variant: .sha256).authenticate(bytes)
return signedString?.toHexString()
}
그러나 두드리지만 인증 에러가 돌아온다. . .
서명을 작성하는 방법이 잘못되었다고 생각하면 의외의 원인으로 원인 판명
BitBank의 API 문서 페이지에서 자신의 API 키와 API 비밀을 입력하면 실제로 API를 두드리고 확인할 수 있지만 거기의 UNIXTIME
왜 100년 전. . .
이 이상한 UNIXTIME에서 한 번 API를 두드린 것이 원인으로 그 후도 인증 에러가 나온 것 같다.
클라이언트에서 두드릴 때 UNIXTIME에 1000을 곱하여 해결
미래
지금은 하나의 동전 만 표시하고 있으므로 모두 표시하고 자산도 전부 더한 자산으로 하자
Reference
이 문제에 관하여(위젯에서 Bitbank의 자산을 확인할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kohei1218/items/91c4691fd9e1caf6dfde
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(위젯에서 Bitbank의 자산을 확인할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kohei1218/items/91c4691fd9e1caf6dfde텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)