An iOS app: the page in a web view, with the phone's own player (#418)
web/src/native.ts (#45) has handed playback to a host since September, and there was no host in this repo: the earlier app, rays/ipodderx-app, grew native lists beside the page and is left behind. This one is the page and a player: a WKWebView of ipx-web, AVPlayer behind the bridge with the audio session to play on locked, now playing and the remote commands (15 back, 30 forward, scrubbing), and positions and read written from the player's own clock, with DeadAir's copy named so the server reads the position on its clock. Built with XcodeGen on a Mac; nothing here compiles the Swift. Its icon is web/logo.svg at 1024. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RqkrVDqdiQEMWAkNGQ2tYA
This commit is contained in:
71
ios/project.yml
Normal file
71
ios/project.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
# XcodeGen makes the .xcodeproj from this, so the project is something a diff can show rather
|
||||
# than a pbxproj nobody reviews. On a Mac:
|
||||
#
|
||||
# brew install xcodegen && cd ios && xcodegen generate && open iPX.xcodeproj
|
||||
name: iPX
|
||||
options:
|
||||
bundleIdPrefix: net.sdf1
|
||||
deploymentTarget:
|
||||
iOS: "17.0"
|
||||
createIntermediateGroups: true
|
||||
settings:
|
||||
base:
|
||||
SWIFT_VERSION: "5.9"
|
||||
TARGETED_DEVICE_FAMILY: "1,2"
|
||||
CODE_SIGN_STYLE: Automatic
|
||||
targets:
|
||||
iPX:
|
||||
type: application
|
||||
platform: iOS
|
||||
sources:
|
||||
- Sources
|
||||
- Resources/Assets.xcassets
|
||||
info:
|
||||
path: Resources/Info.plist
|
||||
properties:
|
||||
CFBundleDisplayName: iPX
|
||||
CFBundleShortVersionString: $(MARKETING_VERSION)
|
||||
CFBundleVersion: "1"
|
||||
# Playing on with the screen locked. A plist key, not a signed entitlement, so it works on
|
||||
# a free personal team; CarPlay's own dashboard app is an entitlement Apple has to grant.
|
||||
UIBackgroundModes: [audio]
|
||||
UILaunchScreen: {}
|
||||
UIApplicationSceneManifest:
|
||||
UIApplicationSupportsMultipleScenes: false
|
||||
UISceneConfigurations:
|
||||
UIWindowSceneSessionRoleApplication:
|
||||
- UISceneConfigurationName: Default Configuration
|
||||
UISceneDelegateClassName: $(PRODUCT_MODULE_NAME).SceneDelegate
|
||||
UISupportedInterfaceOrientations:
|
||||
- UIInterfaceOrientationPortrait
|
||||
- UIInterfaceOrientationLandscapeLeft
|
||||
- UIInterfaceOrientationLandscapeRight
|
||||
# Plain HTTP only for a server on your own network (192.168.1.130:8099); the tunnel is HTTPS.
|
||||
NSAppTransportSecurity:
|
||||
NSAllowsLocalNetworking: true
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: net.sdf1.ipx
|
||||
MARKETING_VERSION: "0.1.0-dev"
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
||||
|
||||
iPXTests:
|
||||
type: bundle.unit-test
|
||||
platform: iOS
|
||||
sources:
|
||||
- Tests
|
||||
dependencies:
|
||||
- target: iPX
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: net.sdf1.ipx.tests
|
||||
|
||||
schemes:
|
||||
iPX:
|
||||
build:
|
||||
targets:
|
||||
iPX: all
|
||||
iPXTests: [test]
|
||||
test:
|
||||
targets:
|
||||
- iPXTests
|
||||
Reference in New Issue
Block a user