Skip to content

PLAYNEXT-7104: Migration screen#581

Open
Naxyoh wants to merge 16 commits into
mainfrom
feature/PLAYNEXT-7104-migration-screen
Open

PLAYNEXT-7104: Migration screen#581
Naxyoh wants to merge 16 commits into
mainfrom
feature/PLAYNEXT-7104-migration-screen

Conversation

@Naxyoh

@Naxyoh Naxyoh commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

Description

Add a screen for when the PlaySRG apps will be decommissioned. All the required values are handled via Firebase to avoid a new release when a change is needed.

Changes Made

  • Add required properties in Firebase
  • Update json files for default remote values
  • Display migration screen if needed

Checklist

  • I have followed the project's style guidelines.
  • I have performed a self-review of my own changes.
  • I have made corresponding changes to the documentation.
  • My changes do not generate new warnings.
  • I have tested my changes and I am confident that it works as expected and doesn't introduce any known regressions.
  • I have reviewed the contribution guidelines.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a remotely-configurable “mandatory migration” experience so PlaySRG apps can be decommissioned and direct users to Play+, with copy/URLs controlled via Firebase (and local JSON defaults).

Changes:

  • Introduces iOS and tvOS SwiftUI migration screens and switches the app root UI to them when mandatoryMigration is enabled.
  • Extends ApplicationConfiguration to fetch/store migration-screen strings and URLs from Firebase remote config.
  • Adds default migration values to per-app ApplicationConfiguration.json files and new image assets for the screen.

Reviewed changes

Copilot reviewed 14 out of 20 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
TV Application/Sources/SceneDelegate.swift Switches tvOS root controller based on isMigrationMandatory and reacts to config-change notifications.
TV Application/Sources/MigrationView.swift Adds tvOS SwiftUI migration screen UI and CTA to the TV App Store URL.
PlaySRG.xcodeproj/project.pbxproj Registers new Migration groups/files in the project and adds them to build phases.
Application/Sources/Migration/MigrationView.swift Adds iOS SwiftUI migration screen + Objective-C bridge controller.
Application/Sources/Configuration/ApplicationConfiguration.m Adds Firebase remote-config keys for migration screen and persists them into configuration.
Application/Sources/Configuration/ApplicationConfiguration.h Exposes migration configuration fields via the public Objective-C API.
Application/Sources/Application/SceneDelegate.m Switches iOS root controller between TabBarController and migration screen on config changes.
Application/Resources/Images/CommonImages.xcassets/play_plus_app_icon.imageset/Play+_icon_RB_round.svg Adds Play+ icon vector asset.
Application/Resources/Images/CommonImages.xcassets/play_plus_app_icon.imageset/Contents.json Registers Play+ icon asset.
Application/Resources/Images/CommonImages.xcassets/migration_background.imageset/Contents.json Registers migration background images for iOS + tvOS idioms/scales.
Application/Resources/Apps/Play SWI/ApplicationConfiguration.json Adds migration defaults (strings + URLs) for Play SWI.
Application/Resources/Apps/Play SRF/ApplicationConfiguration.json Adds migration defaults (strings + URLs) for Play SRF.
Application/Resources/Apps/Play RTS/ApplicationConfiguration.json Adds migration defaults (strings + URLs) for Play RTS.
Application/Resources/Apps/Play RTR/ApplicationConfiguration.json Adds migration defaults (strings + URLs) for Play RTR.
Application/Resources/Apps/Play RSI/ApplicationConfiguration.json Adds migration defaults (strings + URLs) for Play RSI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +196 to +200
NotificationCenter.default
.publisher(for: .ApplicationConfigurationDidChange)
.receive(on: DispatchQueue.main)
.sink { [weak self] _ in
self?.applyRootViewController()
Comment on lines +37 to +47
- (void)applyRootViewController
{
if (ApplicationConfiguration.sharedApplicationConfiguration.isMigrationMandatory) {
// Mandatory migration: the app is no longer accessible, the migration screen replaces the whole UI.
self.window.rootViewController = [MigrationViewController viewController];
} else {
if (![self.window.rootViewController isKindOfClass:TabBarController.class]) {
self.window.rootViewController = [[TabBarController alloc] init];
}
}
}
Comment on lines +453 to +457
NSString *migrationScreenTitle = [firebaseConfiguration stringForKey:@"migrationScreenTitle"];
if (! migrationScreenTitle) {
return NO;
}

Comment on lines +64 to +66
@property (nonatomic, readonly, nullable) NSURL *migrationHelpURL;
@property (nonatomic, readonly, nullable) NSURL *playPlusStoreURL;
@property (nonatomic, readonly, nullable) NSURL *tvPlayPlusStoreURL;
Comment on lines +37 to +39
"migrationHelpURL": "https://www.srgssr.ch",
"playPlusStoreURL": "https://www.srgssr.ch",
"tvPlayPlusStoreURL": "https://www.srgssr.ch"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Feature or update (issue and PR) - release notes section

Projects

Status: 🍿 Code Review

Development

Successfully merging this pull request may close these issues.

4 participants