Skip to content

An informational app to discover Apple's range of SDKs and to inspire developers with new ideas for their next app project. 

Notifications You must be signed in to change notification settings

BernStrom/AppleFrameworks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Header Banner

iOS 15.0+ Swift 5.5 Gitmoji

Please note the app icon above is not suitable for submission to the App Store due to Apple's copyright license on SF Symbols and Emoji.

About the app

 Frameworks

Apple Frameworks is an informational app designed to provide software developers building applications on Apple platforms with the discovery of Apple's range of SDKs and hopefully, inspire developers with new project ideas for their next app.

At its core, the app is mostly informational. Each framework comes with a detail page with a brief overview of its framework, along with a button that direct users to the framework's official page on Apple's website to learn more about the technical aspects of the framework and instructons for adoption.

- Key features & technologies

  • MVVM App Architectural Design Pattern
  • iOS 15+ button system w/ SF Symbols
  • A dual layout option; Users can switch between a Grid or List layout
  • SwiftUI native Link for navigation to external URL (No SFSafariViewController)
Reasoning to adopt SwiftUI's native Link view

Since the release of iOS 14, developers are able to make use of SwiftUI's native Link view for implementing URL link redirection, such as tapping on a button in their app and automatically switching over to Safari to open the link. However, it's important to note that the behaviour of how Safari opens the URL link between UIKit's SFSafariViewController and SwiftUI's native Link are different.

With UIKit's SFSafariViewController, Safari will open the URL link by displaying an in-app browser without leaving the app itself. In most cases, if you want users to briefly access a website without leaving your app, for example redirecting them to a page where they need login into their account with option to use a third-party authentication provider like Google, then this is mostly fine. However, if you intent to displaying an exact replica of a Safari browser along with all its functionality like the app itself, this is actually discouraged.

According to Apple's recommendation in the iOS Human Interface Guidelines:

Avoid using a web view to build a web browser. Using a web view to let people briefly access a website without leaving the context of your app is fine, but Safari is the primary way people browse the web. Attempting to replicate the functionality of Safari in your app is unnecessary and discouraged.


There isn't a lot of explanation as to why Apple doesn't recommend the above practices, but here are the reasons why I decided to make the switch to using SwiftUI's native Link:

  • With the upcoming release of iOS 16, I decided this switch make sense as all apps deployment should at least support two versions lower than the latest public release version. This brings us to iOS 14 being the version that's backwards-compatible and Link is available with SwiftUI apps deployed from version iOS 14+. Although this reasoning is a moot point since the deployment target is set to iOS 15+, keep in mind that one of the core purpose of this project is to simulate an iOS app development in a professional environment, such as developing a public-facing/ commerical app for a company.

  • As the nature of this app being informational, using SwiftUI's Link in this context is more suited to the purpose of this app, as opening the URL link of the framework homepage in the Safari app itself allow users to make use of the full functionality of the Safari browser, such as bookmarking the framework's homepage, diving deeper into the framework's documentation, keeping multiple framework browser tabs opened, etc. All these are not possible with the previous UIKit integration of SFSafariViewController.

App preview

In-app screenshots in light and dark mode.

Trying it yourself

To run this project locally, you will require a Mac/Macbook with Xcode installed. Simply clone or dowload a zip file of this project from GitHub and run it by opening AppleFrameworks.xcodeproj.

If you hit any problems with cloning/downloading or running the app, please let me know.

Credits

Swift, SwiftUI, Xcode, SF Symbols, Cocoa Touch, Safari, App Store, iPhone & iOS, iPad & iPadOS, Apple Watch & watchOS, Apple TV & tvOS, Mac & macOS and their logos are trademarks of Apple Inc., registered in the U.S. and other countries.

Footer Banner

About

An informational app to discover Apple's range of SDKs and to inspire developers with new ideas for their next app project. 

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages