UIApplicationOpenURLOptionUniversalLinksOnly вызывает cra sh на iOS9, даже если он находится в состоянии @available - PullRequest
1 голос
/ 14 февраля 2020

Я пытаюсь поддержать iOS9 в приложении, использующем Microsoft Sign In, и обнаружил, что приложение аварийно завершает работу, потому что не может найти определение для UIApplicationOpenURLOptionUniversalLinksOnly, даже если в коде MSAL это включено в условие @available. Приложение даже не достигает этой точки в коде, оно вылетает при запуске.

Это код, где находится символ (MSIDBrokerInteractiveController.m):

- (void)openBrokerWithRequestURL:(NSURL *)requestURL
       fallbackToLocalController:(BOOL)shouldFallbackToLocalController
{
    NSDictionary *options = nil;

    if (self.interactiveParameters.brokerInvocationOptions.isUniversalLink)
    {
        // Option for openURL:options:CompletionHandler: only open URL if it is a valid universal link with an application configured to open it
        // If there is no application configured, or the user disabled using it to open the link, completion handler called with NO
        if (@available(iOS 10.0, *))
        {
            options = @{UIApplicationOpenURLOptionUniversalLinksOnly : @YES};
        }
    }

    [MSIDAppExtensionUtil sharedApplicationOpenURL:requestURL
                                           options:options
                                 completionHandler:^(BOOL success) {

                                     if (!success)
                                     {
                                         MSID_LOG_WITH_CTX(MSIDLogLevelWarning, self.requestParameters, @"Failed to open broker URL. Falling back to local controller");

                                         [self handleFailedOpenURL:shouldFallbackToLocalController];
                                     }
    }];
}

My решение состояло в том, чтобы либо закомментировать строку, либо просто заменить константу ее строковым значением @ "UIApplicationOpenURLOptionUniversalLinksOnly" (оставив условие @available, поэтому оно никогда не должно работать на iOS9). Как бы то ни было, оба решения работают нормально в любой ОС, но я не уверен, что они могут вызвать проблемы в будущем ... Любая мысль будет оценена.

...