Search Issue Tracker

Won't Fix

Votes

0

Found in

2019.4

2019.4.1f1

2020.2

Issue ID

1262250

Regression

No

[iOS 13][UaaL] Facebook Login window does not open on a button click when using SwiftUI+UaaL

iOS

-

How to reproduce:
1. Open the attached 'PianoUnity' project from the attached 'Piano.zip' zipped folder
2. Open 'SampleScene' Scene
3. Open [ClientName] > Build Settings from the Menu bar
4. Select the 'Internal' Build Type and 'Device' Target SDK
5. Press 'the Build' button
6. Open Terminal
7. If you don't have CocoaPods install it using this command: 'sudo gem install cocoapods'
8. Go to 'Piano' folder using 'cd' command and install CocoaPods using the command 'pod install'
9. Open 'Piano.xcworkspace' located in the 'Piano' folder
10. Build the Xcode project to an iOS device
11. Make sure that the device is connected to the Internet
12. Press 'Continue with Facebook' button in the launched application and observe that the Facebook login screen opens
13. Exit Facebook login window
14. Press 'Play song' button to open a video
15. Exit the opened window
16. Press 'Continue with Facebook' button

Expected result: Facebook login page opens when 'Continue with Facebook' button is pressed
Actual result: Nothing happens when 'Continue with Facebook' button is being pressed

Reproducible with: 2019.4.5f1, 2020.1.0f1, 2020.2.0a18
Couldn't test with: 2018.4.26f1 due to errors thrown in the Console

Reproducible with:
VKNQA00248 iPhone XR (iOS 13.4.1)
VLNQA00310 iPad Pro 12.9 1st gen (iOS 13.4.1)

  1. Resolution Note (2020.2.X):

    UaaL integration to Swift-based apps is not supported.

    Without deeper investigation, this fix for iOS13 from newer Unity versions to respect UIScene made FB login window to appear again after the video view.

    1. add next function in UnityAppController.mm before a call to didFinishLaunchingWithOptions

    #if (PLATFORM_IOS && defined(__IPHONE_13_0)) || (PLATFORM_TVOS && defined(__TVOS_13_0))
    - (UIWindowScene*)pickStartupWindowScene:(NSSet<UIScene*>*)scenes API_AVAILABLE(ios(13.0), tvos(13.0))
    {
    // if we have scene with UISceneActivationStateForegroundActive - pick it
    // otherwise UISceneActivationStateForegroundInactive will work
    // it will be the scene going into active state
    UIWindowScene* foregroundScene = nil;
    for (UIScene* scene in scenes)
    {
    if (![scene isKindOfClass: [UIWindowScene class]])
    continue;
    UIWindowScene* windowScene = (UIWindowScene*)scene;
    if (scene.activationState == UISceneActivationStateForegroundActive)
    return windowScene;
    if (scene.activationState == UISceneActivationStateForegroundInactive)
    foregroundScene = windowScene;
    }
    NSAssert(foregroundScene != nil, @"No foreground window scene found at startup");
    return foregroundScene;
    }
    #endif

    2. in didFinishLaunchingWithOptions replace
    _window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].bounds];
    to:

    #if (PLATFORM_IOS && defined(__IPHONE_13_0)) || (PLATFORM_TVOS && defined(__TVOS_13_0))
    if (@available(iOS 13, tvOS 13, *))
    _window = [[UIWindow alloc] initWithWindowScene: [self pickStartupWindowScene: application.connectedScenes]];
    else
    #endif
    _window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].bounds];

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.