├── .gitignore ├── AppleUniversalHelpViewer.swiftpm ├── .swiftpm │ ├── playgrounds │ │ ├── DocumentThumbnail.plist │ │ └── DocumentThumbnail.png │ └── xcode │ │ └── package.xcworkspace │ │ └── contents.xcworkspacedata ├── Package.resolved ├── Package.swift └── Sources │ └── AppleUniversalHelpViewer │ ├── AppDelegate.swift │ ├── Resources │ ├── Help.help │ │ ├── Adding Stations │ │ │ ├── Adding Manually.html │ │ │ ├── Adding Manually.html.json │ │ │ ├── Adding from Search.html │ │ │ ├── Adding from Search.html.json │ │ │ ├── Adding from the Station Browser.html │ │ │ ├── Adding from the Station Browser.html.json │ │ │ └── index.json │ │ ├── Advanced │ │ │ ├── Handoff.html │ │ │ ├── Handoff.html.json │ │ │ ├── Sharing.html │ │ │ ├── Sharing.html.json │ │ │ ├── Sync.html │ │ │ ├── Sync.html.json │ │ │ └── index.json │ │ ├── AppIcon.png │ │ ├── Automation │ │ │ ├── AppleScript.html │ │ │ ├── AppleScript.html.json │ │ │ ├── Command Line.html │ │ │ ├── Command Line.html.json │ │ │ ├── Shortcuts.html │ │ │ ├── Shortcuts.html.json │ │ │ ├── URL Scheme.html │ │ │ ├── URL Scheme.html.json │ │ │ └── index.json │ │ ├── Basics │ │ │ ├── Browse.html │ │ │ ├── Browse.html.json │ │ │ ├── Play.html │ │ │ ├── Play.html.json │ │ │ ├── Search.html │ │ │ ├── Search.html.json │ │ │ └── index.json │ │ ├── Editing Stations │ │ │ ├── Adding Artwork.html │ │ │ ├── Adding Artwork.html.json │ │ │ ├── Changing Station Details.html │ │ │ ├── Changing Station Details.html.json │ │ │ ├── Moving Stations.html │ │ │ ├── Moving Stations.html.json │ │ │ └── index.json │ │ ├── Upgrading.html │ │ ├── Upgrading.html.json │ │ ├── Welcome.html │ │ ├── Welcome.html.json │ │ ├── images │ │ │ ├── addto.png │ │ │ ├── artwork_chooser.png │ │ │ ├── artwork_context.png │ │ │ ├── browse_findin.png │ │ │ ├── browse_sidebar.png │ │ │ ├── country.png │ │ │ ├── disclosure-closed.png │ │ │ ├── disclosure-open.png │ │ │ ├── edit_panel.png │ │ │ ├── handoff_ios.jpg │ │ │ ├── handoff_macos.jpg │ │ │ ├── hero.png │ │ │ ├── linkout-dark.png │ │ │ ├── linkout-light.png │ │ │ ├── linkout.png │ │ │ ├── menubar_player.jpg │ │ │ ├── moving_ios.jpg │ │ │ ├── moving_mac.jpg │ │ │ ├── moving_mac.png │ │ │ ├── nowplaying_iphone.jpg │ │ │ ├── shortcuts.jpg │ │ │ └── toolbar_mac.jpg │ │ └── index.json │ ├── Localizable.strings │ └── styles.css │ └── SceneDelegate.swift └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.build 3 | /Packages 4 | /*.xcodeproj 5 | xcuserdata/ 6 | DerivedData/ 7 | .swiftpm/config/registries.json 8 | .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata 9 | .netrc 10 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/.swiftpm/playgrounds/DocumentThumbnail.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DocumentThumbnailConfiguration 6 | 7 | accentColorHash 8 | 9 | jgobCtpCFyiG/RKX4lq/mfFDlqlACsvV8g2iAonP8C8= 10 | 11 | appIconHash 12 | 13 | QJeIkjairybCkwM/65ZMTPEYwCJODQY/7AqJ6dBWnvI= 14 | 15 | thumbnailIsPrerendered 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/.swiftpm/playgrounds/DocumentThumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/.swiftpm/playgrounds/DocumentThumbnail.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "appleuniversalcore", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/steventroughtonsmith/AppleUniversalCore.git", 7 | "state" : { 8 | "branch" : "main", 9 | "revision" : "e1232caf11c9c6f9299ed3168f7f941d7d70422f" 10 | } 11 | }, 12 | { 13 | "identity" : "appleuniversalhelp", 14 | "kind" : "remoteSourceControl", 15 | "location" : "https://github.com/steventroughtonsmith/AppleUniversalHelp.git", 16 | "state" : { 17 | "branch" : "main", 18 | "revision" : "afd706b345171c911aa5421fe7e99bea8bec3020" 19 | } 20 | } 21 | ], 22 | "version" : 2 23 | } 24 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.7 2 | 3 | // WARNING: 4 | // This file is automatically generated. 5 | // Do not edit it by hand because the contents will be replaced. 6 | 7 | import PackageDescription 8 | import AppleProductTypes 9 | 10 | let package = Package( 11 | name: "AppleUniversalHelpViewer", 12 | platforms: [ 13 | .iOS("15.0") 14 | ], 15 | products: [ 16 | .iOSApplication( 17 | name: "AppleUniversalHelpViewer", 18 | targets: ["AppleUniversalHelpViewer"], 19 | displayVersion: "1.0", 20 | bundleVersion: "1", 21 | appIcon: .placeholder(icon: .magicWand), 22 | accentColor: .presetColor(.purple), 23 | supportedDeviceFamilies: [ 24 | .pad, 25 | .phone, 26 | .mac 27 | ], 28 | supportedInterfaceOrientations: [ 29 | .portrait, 30 | .landscapeRight, 31 | .landscapeLeft, 32 | .portraitUpsideDown(.when(deviceFamilies: [.pad])) 33 | ], 34 | capabilities: [ 35 | .outgoingNetworkConnections() 36 | ] 37 | ) 38 | ], 39 | dependencies: [ 40 | .package(url: "https://github.com/steventroughtonsmith/AppleUniversalCore.git", .branch("main")), 41 | .package(url: "https://github.com/steventroughtonsmith/AppleUniversalHelp.git", .branch("main")) 42 | ], 43 | targets: [ 44 | .executableTarget( 45 | name: "AppleUniversalHelpViewer", 46 | dependencies: [ 47 | "AppleUniversalHelp" 48 | ], 49 | path: "Sources/AppleUniversalHelpViewer", 50 | resources: [ 51 | .copy("Resources/Help.help"), 52 | .copy("Resources/styles.css"), 53 | .process("Resources/Localizable.strings") 54 | ] 55 | ) 56 | ] 57 | ) 58 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | @UIApplicationMain 4 | class AppDelegate: UIResponder, UIApplicationDelegate { 5 | 6 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 7 | let config = UISceneConfiguration(name: "", sessionRole: .windowApplication) 8 | config.delegateClass = SceneDelegate.self 9 | return config 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/Adding Manually.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Adding a station manually

9 |

If you have the stream address for a specific station or supported audio stream, you can add a station manually.

10 | 11 |
12 |
13 | Mac 14 |

From the main menu, choose File > New > Station… (⌘N)

15 |
16 | 17 |
18 | iPhone 19 |

Select the "+" button in the navigation bar at the top of the All Stations tab or from within a Collection, and choose Add Manually.

20 |
21 |
22 | iPad 23 |

Select the "+" button in the toolbar at the bottom of the All Stations section or from within a Collection, and choose Add Manually.

24 |

Alternatively, choose New Station from the ⌘ Menu, or via keyboard shortcut (⌘N).

25 |
26 |
27 | 28 |

From here, you can also edit its name and choose artwork to represent it in your library.

29 | 30 |

Broadcasts can be used to play any streaming audio feed supported natively by the system, like MP3 and AAC/HLS, including live podcasts. Websites and streaming video are not supported.

31 |
32 |

See also: Adding Artwork

33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/Adding Manually.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Adding a station manually by URL."], 3 | "tags": ["add", "station", "address", "url", "format", "podcast"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/Adding from Search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Adding from Search

9 |

From the Search screen, accessed via the Search tab or by clicking the Search field in the sidebar, you can search from the global database of stations by name and/or by tag.

10 |

You may preview any of the search results, and, if you wish, Add them to your library to sync to other devices, or to use them from CarPlay or Apple Watch.

11 | 12 |

You can view details about the selected station, like tags, codec, and more, in the Details panel. You can also Add the station to any of the collections in your library.

13 | 14 |

If your library has no space remaining, you will be prompted to Upgrade instead.

15 |
16 | 17 |

See also: Search, Adding from the Station Browser

18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/Adding from Search.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Adding a station from the Search tab."], 3 | "tags": ["find", "search", "add", "station"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/Adding from the Station Browser.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Adding from the Station Browser

9 |

From the Browse tab, you can browse by country to find specific stations.

10 |

You can view details about the selected station, like tags, codec, and more, in the Details panel. You can also Add the station to any of the collections in your library.

11 | 12 |

If your library has no space remaining, you will be prompted to Upgrade instead.

13 |
14 | 15 |

See also: The Station Browser, Adding a station manually, Upgrading

16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/Adding from the Station Browser.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Adding a station from the Station Browser."], 3 | "tags": ["find", "search", "add", "station", "browse", "browser"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Adding Stations/index.json: -------------------------------------------------------------------------------- 1 | [ 2 | "Adding Manually.html", 3 | "Adding from the Station Browser.html", 4 | "Adding from Search.html", 5 | ] 6 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/Handoff.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Handoff

9 |

Handoff lets you quickly transfer your playback from one device to another, like from Apple Watch to Mac, or from iPhone to iPad.

10 | 11 |

When you begin playback of a station in Broadcasts, it gives it to Handoff to let other devices in your vicinity, logged into the same Apple ID, know.

12 | 13 |
14 |

On macOS, a new icon for Broadcasts will appear at the end of the Dock, with a badge depicting the currently-playing device. Clicking this icon will open Broadcasts, and will begin playback on your Mac.

15 | 16 | 17 |
18 |

On iPhone or iPad, Handoff is presented as a banner at the bottom of the App Switcher. Tapping this will transfer playback to Broadcasts.

19 | 20 | 21 | 22 |
23 | 24 |

For more information about Handoff, see "Use Handoff to continue tasks on your other devices".

25 | 26 | 27 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/Handoff.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Using Handoff to transfer playback between devices."], 3 | "tags": ["mac", "iphone", "ipad", "watch"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/Sharing.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Sharing a Station or Collection

9 |

You can share a station, or a collection of stations, to another device via the Share Sheet.

10 |

Right-click, control-click, or, on iOS, long-press, a station in your library, or a collection in the collections tab or sidebar, and choose Share.

11 |

This will archive the selection, including its artwork, into a .broadcasts file. You can share this file with other devices, and when opened will prompt the receiver to add the shared stations or collection to their library.

12 | 13 |
14 |

See also: Automation using Shortcuts

15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/Sharing.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Sharing a station or collection."], 3 | "tags": ["airdrop", "file", "share", "save"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/Sync.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Sync

9 |

Broadcasts supports syncing your library between devices using iCloud. Sync is enabled by default, and should work out of the box. When sync is enabled, the iCloud version of your library is always treated as the primary source. Making any change to your library will push those changes to iCloud, and to all your devices.

10 |

Sync can be disabled completely from the Settings panel. This will not remove a synced library from iCloud, and the next time sync is re-enabled the iCloud library will replace the local library.

11 |

Some features of Broadcasts, like its Apple Watch and Apple TV companion apps, require sync to function.

12 | 13 |
14 | 15 |

Enabling Sync

16 |

iCloud sync requires iCloud to be enabled on your device, and any devices you wish to sync to using the same Apple ID. It also requires iCloud Drive to be enabled for Broadcasts on each device.

17 | 18 |

Note: Your device and iCloud storage must not be full, and your Apple ID password, security & payment settings must be up to date, or iCloud sync may be impaired. Sync may also be delayed if other apps with higher priority have an unfinished sync, like Books or Photos, if your device has been recently restored from a backup, or if your network restricts iCloud traffic.

19 |

For more-detailed information, see "Set up iCloud for third-party apps on all your devices".

20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/Sync.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Syncing your library via iCloud."], 3 | "tags": ["synch", "cloudkit", "cloud", "watch", "tv"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Advanced/index.json: -------------------------------------------------------------------------------- 1 | [ 2 | "Sync.html", 3 | "Sharing.html", 4 | "Handoff.html", 5 | ] 6 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/AppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/AppIcon.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/AppleScript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Automation using AppleScript

9 |

On macOS, Broadcasts supports automation using AppleScript. You can perform common tasks like starting/stopping playback, playing specific stations from your library, setting the current volume, or getting the current station name.

10 |

Combined with other third-party apps, you can integrate Broadcasts automation into your workflows.

11 | 12 | 13 |
14 | 15 |

Getting started with AppleScript in Broadcasts

16 |

From the Script Editor app, in the Utilities folder of your Mac, choose Open Dictionary… and select Broadcasts in the list to see its AppleScript vocabulary.

17 |

For more information about using AppleScript, see the AppleScript Language Guide.

18 |
19 |

Example Script

20 |

21 | tell application "Broadcasts"
22 | 	activate
23 | 	play "BBC Radio 1"
24 | 	set the sound volume to 25
25 | end tell
26 | 		
27 |
28 |

See also: Automation using Shortcuts

29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/AppleScript.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Automating Broadcasts using AppleScript."], 3 | "tags": ["scripting", "osa", "automate"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/Command Line.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Using Broadcasts from the Command Line

9 |

On Mac, you can run Broadcasts from the command line.

10 | 11 |
12 |

Usage

13 |

Broadcasts --cli play "BBC Radio 1"

14 | 15 |

Options:

16 | 17 | 18 | 19 |
--helpshow this message and exit
--cli play <"station name">play a station from the library
20 | 21 |
22 |

See also: Automation using URL Schemes

23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/Command Line.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Using Broadcasts from the command line."], 3 | "tags": ["terminal", "shell", "prompt", "cli"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/Shortcuts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Automation using Shortcuts

10 |

Broadcasts supports automation using Shortcuts. You can perform common tasks like starting/stopping playback, playing specific stations, or adjusting the Sleep Timer.

11 | 12 | 13 | 14 |
15 |

Getting started with Shortcuts in Broadcasts

16 |

From the Shortcuts app, create a new Shortcut, then choose the Apps tab of the Search for apps and actions panel, and select Broadcasts. From here, you can see all the currently-available actions, and you can add them to your workflow.

17 |

For more information about using Shortcuts, see the Shortcuts User Guide.

18 |
19 |

See also: Automation using AppleScript

20 | 21 | 22 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/Shortcuts.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Automating Broadcasts using Shortcuts."], 3 | "tags": ["workflow", "action", "automate", "script", "scripting"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/URL Scheme.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Automation using URL Schemes

9 |

Broadcasts has a built-in URL Scheme for adding a station or streaming audio source to your library, or playing one directly without adding it. This lets you provide a link directly to a particular public stream or live podcast that you can share with others, or, combined with a link shortener, embed on a website or social media service.

10 |
11 |

Usage

12 | broadcasts://[verb]?[param1=value][&param2=value] 13 |

Verbs

14 | 18 |

Parameters

19 | 24 |

Parameters can be provided in plain text, percent-encoded. Address parameters are regular URLs and can optionally be encoded using base64. 25 | 26 |

Example

27 | 28 | broadcasts://add?name=My%20Great%20Station&address=https://127.0.0.1:8080 29 | 30 |
31 |

See also: Automation using AppleScript, Shortcuts

32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/URL Scheme.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Craft URLs to automate station playback & import."], 3 | "tags": ["url", "scheme", "base64", "address", "share", "sharing"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Automation/index.json: -------------------------------------------------------------------------------- 1 | [ 2 | "Shortcuts.html", 3 | "AppleScript.html", 4 | "URL Scheme.html", 5 | "Command Line.html", 6 | ] 7 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/Browse.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

The Station Browser

9 |

The Station Browser, accessed via the Browse tab, lets you browse by country to find specific stations.

10 | 11 | 12 |

At the top of the Station Browser will be a shortcut to the country matching your current system locale. At the bottom, you can find the Other category for stations not affiliated with any country in particular.

13 | 14 | 15 |
16 | 17 |

Filtering

18 |

You can filter the list by using the Find in Countries or Find in Stations search field at the top of the Station Browser.

19 | 20 | 21 | 22 |

This filters only the current list. To perform a global search, or to search by tags, see Adding from Search.

23 | 24 |
25 |

See also: Adding from Search, Adding from the Station Browser

26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/Browse.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Discover new stations in the Station Browser."], 3 | "tags": ["search", "browse", "country"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/Play.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Playing Stations

9 |

You can play a station in your library by clicking on it, in Grid view mode, or double-clicking in List mode.

10 | 11 |
12 |

Toolbar

13 |

On Mac and iPad, in the toolbar of the library window you can find playback controls, metadata, volume control and the AirPlay button. In smaller layouts, the toolbar may shrink its available options to fit.

14 | 15 | 16 | 17 |
18 |

Now Playing

19 |

On iPhone and iPad, you can tap the toolbar to present the Now Playing screen to access more controls, including the Sleep Timer and Shazam, and the Shazam Track History.

20 | 21 | 22 | 23 |
24 |

MiniPlayer

25 |

On Mac, you can show the MiniPlayer from the menu bar.

26 |

From the main menu, choose View > Show MiniPlayer

27 |

The MiniPlayer is similar to the Now Playing screen, but has an additional button () to access your library in List mode.

28 | 29 |

In the titlebar of the MiniPlayer window, you can choose to have the MiniPlayer Float on Top of other windows by selecting the pin button .

30 |

You can resize the MiniPlayer by dragging the bottom edge of the window.

31 | 32 |
33 |

Controls

34 |

You can use the media keys on your physical keyboard to play and pause stations, and to switch to the next or previous track. If you have a Game Controller, this may also be used to control playback.

35 |

Broadcasts also has broad support for keyboard navigation.

36 | 37 |
38 |

Lock Screen, Control Center & Menu Bar

39 | 40 |

Broadcasts also can be controlled from the Lock Screen on iPhone and iPad, from Control Center, and from the Mac menu bar.

41 | 42 |

On the Mac, the system-provided Now Playing view can be dragged from Control Center into the menu bar, to provide a persistent Now Playing menu that works with all apps (including Broadcasts).

43 | 44 | 45 |
46 |

Dock

47 |

From the macOS Dock, you can right-click or control-click the Broadcasts icon, and choose Play or Pause.

48 |
49 |

See also: Automation using AppleScript, Shortcuts

50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/Play.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Play stations and control playback."], 3 | "tags": ["dock", "gamepad", "now playing", "control", "center", "airplay", "menu", "bar", "toolbar", "volume", "shazam", "grid", "list"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/Search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Search

9 |

From the Search screen, accessed via the Search tab or by clicking the Search field in the sidebar, you can search from the global database of stations by name and/or by tag.

10 | 11 |

The global database is cached periodically so it can be searched offline. It may be redownloaded manually to pick up the latest station changes, or will automatically be updated passively as you browse the Station Browser.

12 | 13 |
14 |

See also: Adding from Search, Adding from the Station Browser

15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/Search.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Find stations from around the world, or search your library."], 3 | "tags": ["search", "new", "cache"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Basics/index.json: -------------------------------------------------------------------------------- 1 | [ 2 | "Play.html", 3 | "Browse.html", 4 | "Search.html", 5 | ] 6 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/Adding Artwork.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Adding Artwork to a Station

9 |

You can add or edit the artwork for a station in your library from the Edit panel.

10 |

Right-click, control-click, or, on iOS, long-press, a station in your library and choose Edit.

11 |

From the Edit panel, select Choose Image… to show the Artwork Chooser. You can also select the artwork thumbnail in the Edit panel.

12 | 13 | 14 |
15 | 16 |

Copy/Pasting Artwork

17 |

From the artwork thumbnail's context menu, you may Copy or Remove the current artwork, or Paste new artwork from the clipboard.

18 | 19 | 20 | 21 |
22 | 23 |

Creating Custom Artwork

24 |

From the Artwork Chooser, you can create custom artwork using Emoji, text, and color, or pick from one of the simple presets.

25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/Adding Artwork.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Add or modify artwork for a station in your library."], 3 | "tags": ["text", "emoji", "cut", "copy", "paste", "photo", "picture", "file", "image", "add image"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/Changing Station Details.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Changing Station Details

9 |

You can rename a station in your library, or point it at a new address, from the Edit panel.

10 |

Right-click, control-click, or, on iOS, long-press, a station in your library and choose Edit.

11 | 12 | 13 | 14 |
15 |

See also: Adding Artwork

16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/Changing Station Details.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Rename a station in your library, or update its address."], 3 | "tags": ["name", "address", "url", "edit"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/Moving Stations.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Moving Stations

10 |

You can move a station by right-clicking, control-clicking, or, on iOS, long-pressing on it, and choosing Move to Collection in the context menu, then choosing a destination.

11 |

You can also reorder stations or move them between collections using drag and drop.

12 | 13 | 14 |
15 |

See also: Adding Artwork

16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/Moving Stations.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Move a station between collections."], 3 | "tags": ["moving", "reorder", "drag", "drop"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Editing Stations/index.json: -------------------------------------------------------------------------------- 1 | [ 2 | "Adding Artwork.html", 3 | "Changing Station Details.html", 4 | "Moving Stations.html", 5 | ] 6 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Upgrading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Upgrading

10 | 11 |

The free version of Broadcasts is full-featured, but it has a fixed limit on the number of stations you can save to your library. Unlocking your library allows you to take full advantage of features like CarPlay, Apple Watch, and Apple TV. You can also remove items from your library to free up slots for new stations, if you'd like to remain using Broadcasts for free.

12 |

To remove this limitation, you can elect to Upgrade.

13 |

You can upgrade Broadcasts from the Upgrade panel.

14 |

From the main menu, choose Broadcasts > Upgrade to Full Version…

15 |
16 |

Universal Purchase & Family Sharing

17 |

Broadcasts supports Universal Purchase and Family Sharing. This means a single purchase will unlock Broadcasts across all your devices, and for anybody in your Family Sharing group.

18 |

When unlocking Broadcasts on a new platform, or a new person's account, for the first time, choose the Purchase button in the Upgrade panel. This will verify your previous purchase with the App Store, and grant access to the existing license. You will not be charged a second time.

19 |

For subsequent installs, you can use the Restore Purchase button instead.

20 | 21 | 22 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Upgrading.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Upgrading, Universal Purchase, and Family Sharing."], 3 | "tags": ["unlock", "free", "paid", "purchase", "license", "iap", "upgrade"] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Welcome.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 |
12 |
13 |

Broadcasts User Guide

14 |
Table of Contents
15 |
16 |
17 |
18 | 19 |

Welcome to Broadcasts

20 | 21 |

With Broadcasts, you can play streaming radio from around the globe. Add some stations to your library to get started.

22 | 23 | 24 |

If what you're looking for is not covered here, feel free to reach out to support.

25 |
26 | 27 |

See also: Playing Stations, Adding from the Station Browser

28 | 29 | 30 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/Welcome.html.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": ["Welcome to Broadcasts."], 3 | "tags": [] 4 | } 5 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/addto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/addto.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/artwork_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/artwork_chooser.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/artwork_context.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/artwork_context.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/browse_findin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/browse_findin.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/browse_sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/browse_sidebar.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/country.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/country.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/disclosure-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/disclosure-closed.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/disclosure-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/disclosure-open.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/edit_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/edit_panel.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/handoff_ios.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/handoff_ios.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/handoff_macos.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/handoff_macos.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/hero.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/linkout-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/linkout-dark.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/linkout-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/linkout-light.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/linkout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/linkout.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/menubar_player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/menubar_player.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/moving_ios.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/moving_ios.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/moving_mac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/moving_mac.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/moving_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/moving_mac.png -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/nowplaying_iphone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/nowplaying_iphone.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/shortcuts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/shortcuts.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/toolbar_mac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steventroughtonsmith/AppleUniversalHelpViewer/a8dde992cd782101acee92cb2f9273d5347ae7c7/AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/images/toolbar_mac.jpg -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Help.help/index.json: -------------------------------------------------------------------------------- 1 | [ 2 | "Welcome.html", 3 | "Basics", 4 | "Adding Stations", 5 | "Editing Stations", 6 | "Advanced", 7 | "Automation", 8 | "Upgrading.html", 9 | ] 10 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Localizable.strings 3 | 4 | 5 | Created by Steven Troughton-Smith on 03/01/2023. 6 | 7 | */ 8 | 9 | "HELP_TOC_TITLE" = "Help"; 10 | "HELP_TOC_SEARCH_PLACEHOLDER" = "Search"; 11 | "SEARCH_RECENTS_TITLE" = "Recent Searches"; 12 | "SEARCH_RECENTS_CLEAR" = "Clear Recent Searches"; 13 | "SEARCH_RECENTS_NO_RECENTS" = "No Recent Searches"; 14 | "SEARCH_RESULTS" = "Search Results"; 15 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/Resources/styles.css: -------------------------------------------------------------------------------- 1 | 2 | * { 3 | box-sizing: border-box; 4 | text-rendering: optimizeLegibility; 5 | -webkit-font-smoothing: antialiased; 6 | font-kerning: auto; 7 | } 8 | html { 9 | line-height: 1.4; 10 | font: -apple-system-body; 11 | color: black; 12 | } 13 | body { 14 | padding: 1em; 15 | margin: 0 auto; 16 | max-width: 840px; 17 | font-size: 11pt; 18 | } 19 | 20 | a { 21 | color: #007aff; 22 | text-decoration: none; 23 | } 24 | 25 | img { 26 | max-width: 100%; 27 | overflow: hidden; 28 | } 29 | 30 | h1 { 31 | padding: 0pt; 32 | margin: 2pt; 33 | } 34 | 35 | hr { 36 | border: 0.5pt solid; 37 | opacity: 0.2; 38 | } 39 | 40 | .header { 41 | height: 60pt; 42 | margin-bottom: 20pt; 43 | overflow: hidden; 44 | } 45 | 46 | .header-left { 47 | float:left; 48 | width: 60pt; 49 | height: 60pt; 50 | display: block; 51 | margin-right: 8pt; 52 | } 53 | 54 | .header-right { 55 | padding-top: 8pt; 56 | } 57 | 58 | .appicon { 59 | width: 60pt; 60 | height: 60pt; 61 | display: block; 62 | } 63 | 64 | .toccontainer { 65 | width: 16pt; 66 | height: 16pt; 67 | display: inline-block; 68 | margin-right: 4pt; 69 | } 70 | 71 | .tocsymbol { 72 | margin-top: 5pt; 73 | width: 16pt; 74 | height: 12pt; 75 | float: left; 76 | } 77 | 78 | details { 79 | cursor: pointer; 80 | } 81 | 82 | details[open] { 83 | } 84 | 85 | details summary { 86 | font-weight: 600; 87 | margin: 16px 0px; 88 | outline: none; 89 | } 90 | 91 | details[open] summary { 92 | margin-bottom: 16px; 93 | } 94 | 95 | details summary::-webkit-details-marker { 96 | color: transparent; 97 | background: url('helpbundle://images/disclosure-closed.png'); 98 | background-repeat: no-repeat; 99 | background-size: 9px 9px 100 | } 101 | 102 | details[open] summary::-webkit-details-marker { 103 | background: url('helpbundle://images/disclosure-open.png'); 104 | background-repeat: no-repeat; 105 | background-size: 9px 9px 106 | } 107 | 108 | td { 109 | padding-left: 8pt; 110 | padding-right: 8pt; 111 | } 112 | 113 | .menudirections { 114 | padding-left: 8pt; 115 | padding-right: 8pt; 116 | padding-top: 0pt; 117 | padding-bottom: 0pt; 118 | border-radius: 4pt; 119 | border-width: 1pt; 120 | border-style: solid; 121 | border-color: rgba(40, 40, 40, 0.1); 122 | background: rgba(240, 240, 240, 1.0); 123 | display: block; 124 | } 125 | 126 | .inlinesymbol { 127 | margin-left: 4pt; 128 | margin-right: 4pt; 129 | } 130 | 131 | .linkoutimg { 132 | content: url('helpbundle://images/linkout.png'); 133 | width: 10pt; 134 | height: 10pt; 135 | margin-left: 2pt; 136 | margin-right: 2pt; 137 | } 138 | 139 | @media (prefers-color-scheme: dark) { 140 | html { 141 | color: rgba(250, 250, 250, 1.0); 142 | } 143 | 144 | .menudirections { 145 | background: rgba(40, 40, 40, 1.0); 146 | border-color: rgba(240, 240, 240, 0.1); 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /AppleUniversalHelpViewer.swiftpm/Sources/AppleUniversalHelpViewer/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // 4 | // 5 | // Created by Steven Troughton-Smith on 14/01/2023. 6 | // 7 | 8 | import UIKit 9 | import AppleUniversalHelp 10 | 11 | class SceneDelegate: COREHelpWindowSceneDelegate { 12 | 13 | func sceneDidBecomeActive(_ scene: UIScene) { 14 | setupHelpSystemHandler() 15 | } 16 | 17 | // MARK: - Help Menu (Mac) 18 | 19 | /* 20 | This configures Help menu Spotlight search on macOS. 21 | */ 22 | 23 | var helpSearchHandler:COREHelpSearchSpotlightHandler? = nil 24 | 25 | func setupHelpSystemHandler() { 26 | #if targetEnvironment(macCatalyst) 27 | 28 | guard helpSearchHandler == nil else { return } 29 | 30 | let handler = COREHelpSearchSpotlightHandler(helpBundle:helpRootController.helpBundle) 31 | 32 | handler.actionHandler = { [weak self] page in 33 | self?.helpRootController.navigate(to: page) 34 | } 35 | 36 | handler.registerWithSystem() 37 | 38 | helpSearchHandler = handler 39 | #endif 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AppleUniversalHelpViewer 2 | 3 | Sample app showcasing [AppleUniversalHelp](https://github.com/steventroughtonsmith/AppleUniversalHelp). 4 | 5 | ### Screenshots 6 | 7 | ![https://hccdata.s3.amazonaws.com/gh_helpviewer_macos.jpg](https://hccdata.s3.amazonaws.com/gh_helpviewer_macos.jpg) 8 | ![https://hccdata.s3.amazonaws.com/gh_helpviewer_ios2.jpg](https://hccdata.s3.amazonaws.com/gh_helpviewer_ios2.jpg) 9 | --------------------------------------------------------------------------------