Commit ccc39d25 by Dmitriy Stepanets

- Uncommented widgets

- Changed number of widgets in WidgetPromoController
- Removed invalid analytics key
- Added some analytics for widgets
- Fixed app group UserDefaults getter
parent 015f2e30
......@@ -80,7 +80,7 @@
<EnvironmentVariables>
<EnvironmentVariable
key = "_XCWidgetKind"
value = "com.onelouder.oneweather.widget.radar"
value = "com.onelouder.oneweather.widget.temperature"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
......@@ -90,7 +90,7 @@
</EnvironmentVariable>
<EnvironmentVariable
key = "_XCWidgetFamily"
value = "large"
value = "medium"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
......
......@@ -79,7 +79,7 @@ private extension PromotionSmallWidgetView {
func prepareTopLabel() {
let select = "widget.promotion.selectList".localized()
let widgets = "16 \("widget.promotion.widgets".localized())"
let widgets = "7 \("widget.promotion.widgets".localized())"
let attrString = NSMutableAttributedString(string: select + "\n" + widgets)
attrString.addAttribute(.font,
......
......@@ -199,9 +199,9 @@ private extension WidgetPromotionController {
stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .temperatureMedium))
stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .temperatureLarge))
stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .precipitationMedium))
// stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .windMedium))
// stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .windLarge))
// stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .radarLarge))
stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .windMedium))
stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .windLarge))
stackView.addArrangedSubview(PromotionWidgetViewWrapper(widgetType: .radarLarge))
scrollView.addSubview(stackView)
stackView.snp.makeConstraints { make in
......
......@@ -94,7 +94,6 @@ public enum AnalyticsEvent: String {
case ANALYTICS_WIDGET_PROMO_EXPAND = "WIDGET_PROMO_EXPAND"
case ANALYTICS_WIDGET_BOTTOM_SCROLLED = "WIDGET_PROMO_BOTTOM_SCROLLED"
case ANALYTICS_WIDGET_PROMO_LEARN_CTA = "WIDGET_PROMO_LEARN_CTA"
case ANALYTICS_WIDGET_LAUNCH_FROM = "LAUNCH_FROM_WIDGET"
///Widget actions
case ANALYTICS_WIDGET_PLACED = "WIDGET_PLACED"
......
......@@ -22,6 +22,7 @@ public enum AnalyticsParameter: String {
case ANALYTICS_KEY_THEME_CHANGE_NAME = "themeName"
case ANALYTICS_KEY_FIST_OPEN_SOURCE = "Source"
case ANALYTICS_KEY_WIDGET_NAME = "widget_name"
case ANALYTICS_KEY_WIDGET_SMART_TEXT = "smart_text"
case ANALYTICS_KEY_SHORTS_CARD_POSITION = "position"
case ANALYTICS_KEY_SHORTS_CARD_ID = "card_id"
case ANALYTICS_KEY_SHORTS_TIME_SPENT = "time_spent"
......
......@@ -22,7 +22,7 @@ public struct UserDefaultsValue<T> {
public var wrappedValue: T {
get {
return (UserDefaults.standard.object(forKey: key) as? T) ?? defaultValue
return (userDefaults.object(forKey: key) as? T) ?? defaultValue
}
set {
userDefaults.set(newValue, forKey: key)
......
......@@ -108,6 +108,7 @@ public class WidgetManager {
self.widgetOptions = WidgetOptions(rawValue: storedWidgetsOptions)
}
private let log = Logger(componentName: "WidgetManager")
private let smartTextProvider = SmartTextProvider()
private var widgetOptions: WidgetOptions = []
public func refreshAnalytics() {
......@@ -128,20 +129,26 @@ public class WidgetManager {
let name = WidgetOptions.name(for: option)
AppAnalytics.shared.log(event: .ANALYTICS_WIDGET_CARD_CLICK)
AppAnalytics.shared.log(event: .ANALYTICS_LAUNCH_FROM_WIDGET)
AppAnalytics.shared.log(event: .ANALYTICS_WIDGET_LAUNCH_FROM,
AppAnalytics.shared.log(event: .ANALYTICS_LAUNCH_FROM_WIDGET,
params: [.ANALYTICS_KEY_WIDGET_NAME : name])
}
public func logUpdate() {
public func logUpdate(forLocation location: Location?) {
WidgetCenter.shared.getCurrentConfigurations {[weak self] result in
switch result {
case .success(let widgetInfo):
for info in widgetInfo {
if let option = WidgetOptions.option(forKind: info.kind, family: info.family) {
let name = WidgetOptions.name(for: option)
var params: [AnalyticsParameter : String] = [.ANALYTICS_KEY_WIDGET_NAME : name]
if let updatedLocation = location {
let smartText = self?.smartTextProvider.smartText(for: updatedLocation) ?? ""
params[.ANALYTICS_KEY_WIDGET_SMART_TEXT] = #"\#(smartText)"#
}
AppAnalytics.shared.log(event: .ANALYTICS_WIDGET_UPDATED,
params: [.ANALYTICS_KEY_WIDGET_NAME : name])
params: params)
}
}
case .failure(let error):
......
......@@ -76,7 +76,7 @@ class WeatherProvider: TimelineProvider {
let nextRefresh = Calendar.current.date(byAdding: .minute, value: 30, to: Date())!
let entry = WeatherEntry(location: fetchedLocation, date: nextRefresh, radarMapImage: mapImage)
let timeline = Timeline(entries: [entry], policy: .atEnd)
WidgetManager.shared.logUpdate()
WidgetManager.shared.logUpdate(forLocation: fetchedLocation)
completion(timeline)
}
}
......@@ -84,7 +84,7 @@ class WeatherProvider: TimelineProvider {
let nextRefresh = Calendar.current.date(byAdding: .minute, value: 30, to: Date())!
let entry = WeatherEntry(location: location, date: nextRefresh)
let timeline = Timeline(entries: [entry], policy: .atEnd)
WidgetManager.shared.logUpdate()
WidgetManager.shared.logUpdate(forLocation: location)
completion(timeline)
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment