위젯에서 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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)