Firebase의 새로운 SDK를 사용하고 싶다면 Cocoapods 1.0.0 이상을 사용하십시오.
6307 단어 FirebaseGoogleAnalyticsAOP
TL;DR
요 전날 공개된 Firebase의 새로운 SDK를 사용하고 싶은 경우는, Cocoapods의 1.0.0 이상을 이용해 SDK의 도입을 실시한다.
로깅시의 AOP 라이브러리에서 Aspects를 이용하고 있는 경우에, 에러가 나오는 경우는 MOAspect로 환승하자.
고민한 것
Cocoapods 버전 0.39.0으로 새로워진 Firebase SDK를 설치하려고 하면
Segmentation fault: 11
라는 오류가 발생하여 빌드를 할 수 없다. FIR
로 시작하는 클래스가 코드상에 출현하지 않으면 (코멘트 아웃 등을 해) 빌드가 성공하기 때문에, Firebase의 SDK의 인스톨 방법에 문제가 있을 것 같은 느낌이었다. 1. While loading members for 'FIRDatabaseReference' at <invalid loc>
2. While deserializing decl #101 (PATTERN_BINDING_DECL)
3. While deserializing decl #2 (VAR_DECL)
해결책
StackOverflow에 문제와 해결책이 있었고 Cocoapods 버전이 오래된 것이 문제처럼 보였습니다.
h tp : / / s tac ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 37347327 / u pg 등으로 d 푹 빠지면 세의 w
업데이트하면 무사히 컴파일이 성공했다.
그런 하루.
덤
Cocoapods의 1.0.0을 이용하면 화면 표시를 GoogleAnalytics에 전송할 때 이용하고 있는 Aspects( htps : // 기주 b. 코 m / s 테이 페테 / 아 s pects )의 임포트시에 에러가 나게 되어 버렸다.
만들고 있는 앱에서는 GA에의 송신을 위해서만 AOP를 이용하고 있으므로, 최악 각 ViewController의
viewWillAppear(_:)
혹은 Aspects를 Cocoapods를 1.0.0에서 이용할 수 있도록 할 수 없는지 조사하기로 했다.iOS에서 AOP를 할 수 있는 라이브러리
htps : // 기주 b. 코 m / s 테이 페테 / 아 s pects
htps : // 기주 b. 코 m / 모아이 / 모아 s pects
쉽게 찾은 곳, 위 두 가지.
결론
MOAspects를 이용하면 순조롭게 갈 수 있었다.
UIViewController의
viewWillAppear(_:)
의 After에 Hook를 설정해, ScreenTrackable라고 하는 프로토콜에 준거한 ViewController의 경우만, 그 ScreenTrackable 프로토콜의 tracking이라고 하는 메소드를 실행하게 되어 있다.func setupHook() {
MOAspects.hookInstanceMethodForClass(UIViewController.self,
selector: #selector(UIViewController.viewWillAppear(_:)),
position: .After,
range: MOAspectsHookRangeAll) { (instance: AnyObject!) -> Void in
if let instance = instance as? UIViewController {
if let viewController = instance as? ScreenTrackable {
viewController.tracking()
}
}
}
}
덧붙여서 ScreenTrackable 프로토콜은 이런 느낌.
UIViewController+ScreenTrackable.swift
protocol ScreenTrackable {
func tracking()
}
extension ScreenTrackable where Self: UIViewController {
func tracking() {
let sceneName = self.sceneName() // クラス名からGAに送信するファイル名を取得する(※1)
Event.Screen(sceneName).send() // GAに送信
}
}
클래스명으로부터 GA에 송신하는 파일명을 취득하는 부분(※1)은, ぃ tp // m / t t / / ms / 647 094936287 6bd2d3 등에 방법이 쓰여져 있다. 또한, 그대로 클래스 명을 송신하는 것이 아니라, 대응하는 일본어의 화면 명으로 다시 송신하고있다. 이렇게 함으로써 GA로 현격하게 보기 쉬워진다.
Reference
이 문제에 관하여(Firebase의 새로운 SDK를 사용하고 싶다면 Cocoapods 1.0.0 이상을 사용하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kouheiszk/items/10afff4c8be044b1e614텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)