Skredvarsel app - an iOS, iPadOS, and macOS application that provides daily avalanche warnings from the Norwegian Avalanche Warning Service API

Related tags

Code Quality iVarsom
Overview

iVarsom icon

Skredvarsel

The Skredvarsel (Avalanche warning) app is an iOS, iPadOS, and macOS application that provides daily avalanche warnings from the Norwegian Avalanche Warning Service API.

The main feature of the app is a set of beautiful widgets that can be added to the home screen on iOS and iPadOS, or the notification center on macOS. It is not intended to replace the official Varsom Regobs app, but rather complement it with an app taking full advantage of the Apple platforms. Hence the code name iVarsom.

The app is also a learning exercise for myself to learn how to build and distribute a SwiftUI app for iOS, iPadOS, watchOS, and macOS.

iOS and iPadOS

App running on iPhone 13 and iPad Pro 12.9

Download on the App Store

macOS

App running on macOS

Download on the Mac App Store

Beta testing

Join the beta testing group on TestFlight.

Learning points covered by the app

The app is primarily a learning exercise to familiarize myself with SwiftUI and modern development practices on iOS, iPadOS, macOS and watchOS. This section will list some of the concepts covered in the app, with references to the learning materials I used for the different topics.

SwiftUI

The app is developed entirely in SwiftUI. The first prototype was actually developed on an iPad using Swift Playgrounds. The built-in learning programmes in Swift Playground is a nice introduction to the Swift language and SwiftUI. However, due to the lack of Widget support I had to move to full Xcode for most of the development.

The app makes extensive use of SwiftUI previews, and the listed WWDC presentation was of great help to make the most of this feature.

The Introducing SwiftUI tutorial from Apple is also a great way to get familiar with SwiftUI.

WidgetKit

Widgets is the key feature of the app, so I spent quite some time learning about Widgets. The app uses intents for configuration, including color customizations to the configuration interface.

Localization

The app is localized in Norwegian and English language.

Swift Packages

The app uses the open source package DynamicColor in the DangerGradient.swift file to dynamically generate the gradient background of the warning views.

Concurrency and asynchronous code

The app uses async/await for network operations in the VarsomApiClient.swift file.

You might also like...
Makes it easier to support older versions of iOS by fixing things and adding missing methods

PSTModernizer PSTModernizer carefully applies patches to UIKit and related Apple frameworks to fix known radars with the least impact. The current set

iOS tool that helps with profiling iOS Memory usage.

FBMemoryProfiler An iOS library providing developer tools for browsing objects in memory over time, using FBAllocationTracker and FBRetainCycleDetecto

A tool for Swift code modification intermediating between code generation and formatting.

swift-mod A tool for Swift code modification intermediating between code generation and formatting. Overview swift-mod is a tool for Swift code modifi

SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations.
SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations.

SwiftCop is a validation library fully written in Swift and inspired by the clarity of Ruby On Rails Active Record validations. Objective Build a stan

A command-line tool and Xcode Extension for formatting Swift code
A command-line tool and Xcode Extension for formatting Swift code

Table of Contents What? Why? How? Command-line tool Xcode source editor extension Xcode build phase Via Applescript VSCode plugin Sublime Text plugin

A tool to enforce Swift style and conventions.
A tool to enforce Swift style and conventions.

SwiftLint A tool to enforce Swift style and conventions, loosely based on the now archived GitHub Swift Style Guide. SwiftLint enforces the style guid

Cross-platform static analyzer and linter for Swift.
Cross-platform static analyzer and linter for Swift.

Wiki • Installation • Usage • Features • Developers • License Tailor is a cross-platform static analysis and lint tool for source code written in Appl

Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing projects.

Trackable Trackable is a simple analytics integration helper library. It’s especially designed for easy and comfortable integration with existing proj

Type-safe observable values and collections in Swift

GlueKit ⚠️ WARNING ⚠️ This project is in a prerelease state. There is active work going on that will result in API changes that can/will break code wh

Comments
  • Add support for lock screen widgets

    Add support for lock screen widgets

    iOS 16 adds support for Lock Screen widgets in a similar style to watchOS complications. The APIs are now unified across iOS and watchOS, so the same widget will also be the complication in watchOS 9.

    watchOS 
    opened by follesoe 0
  • Swift Task Continuation Misuse

    Swift Task Continuation Misuse

    The following warning was printed when debugging the watchOS app, using the location manager. I need to figure out what I am doing wrong.

    LocationManager.updateLocation
    SWIFT TASK CONTINUATION MISUSE: updateLocation() leaked its continuation!
    2022-12-25 20:50:35.052675+0100 Skredvarsel[61577:5512343] SWIFT TASK CONTINUATION MISUSE: updateLocation() leaked its continuation!
    LocationManager.didUpdateLocations
    LocationManager.updateLocation
    
    opened by follesoe 0
Owner
Jonas Follesø
Chief Technology Officier at Norwegian startup @BluEye-Robotics. Blueye will provide the world’s finest underwater drone for ocean exploration.
Jonas Follesø
Disease diagnosis service based on api linkage for education chatbot provided by Saltlux

AIDoctor-P-Project 가천대학교 2021-2학기 P프로젝트입니다. 솔트룩스에서 제공된 교육용 챗봇 api 연동을 기반으로 한 질병 진단 서비스 Splash Login UserMain Disease Detail ### Hospital Detail ChatBo

보니 0 Dec 18, 2021
A dynamic library for Cornerstone macOS.

Cornerstone-Hook A dynamic library for Cornerstone macOS. Screenshot Overview Quick Start sudo ./install.sh Install or Upgrade CornerstoneStart.app su

ivar 3 Oct 8, 2022
Simple iOS app blackbox assessment tool. Powered by frida.re and vuejs.

Discontinued Project This project has been discontinued. Please use the new Grapefruit #74 frida@14 compatibility issues frida@14 introduces lots of b

Chaitin Tech 1.6k Dec 16, 2022
Find common xib and storyboard-related problems without running your app or writing unit tests.

IBAnalyzer Find common xib and storyboard-related problems without running your app or writing unit tests. Usage Pass a path to your project to ibanal

Arek Holko 955 Oct 15, 2022
Find memory leaks in your iOS app at develop time.

中文介绍 | FAQ中文 MLeaksFinder MLeaksFinder helps you find memory leaks in your iOS apps at develop time. It can automatically find leaks in UIView and UIV

Tencent 5.3k Dec 22, 2022
Find memory issues & leaks in your iOS app without instruments

HeapInspector Find memory issues & leaks in your iOS app HeapInspector is a debug tool that monitors the memory heap with backtrace recording in your

Christian Menschel 1.8k Nov 24, 2022
In-app memory usage monitoring for iOS

What's Stats Stats displays load statuses such as the memory usage, the CPU load, and the number of subviews in-app, and in realtime. How to use Just

Shuichi Tsutsumi 170 Sep 18, 2022
Manipulates the undocumented interchange format for the Apple Notes app.

NotesArchive A Swift package for reading and writing an undocumented interchange format for the Apple Notes app in macOS 12 Monterey1. Enabling the De

Zachary Waldowski 7 Jul 5, 2022
A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C

OCLint - https://oclint.org OCLint is a static code analysis tool for improving quality and reducing defects by inspecting C, C++ and Objective-C code

The OCLint Static Code Analysis Tool 3.6k Dec 29, 2022
Measure Swift code metrics and get reports in Xcode, Jenkins and other CI platforms.

Taylor ⚠️ Taylor is DEPRECATED. Use SwiftLint instead. A tool aimed to increase Swift code quality, by checking for conformance to code metrics. Taylo

YOPESO 301 Dec 24, 2022