2024.09.28

Cordova InAppbrowser iOS 18で外部ブラウザが起動しない

<環境>
Cordova-ios 7.1.1
cordova-plugin-inappbrowser 6.0.0 "InAppBrowser"
<Xcodeでのエラーメッセージ>
 BUG IN CLIENT OF UIKIT: The caller of UIApplication.openURL(_:) needs to migrate to the non-deprecated UIApplication.open(_:options:completionHandler:). 
Force returning false (NO). IAB.close() called but it was already closed.
 The preference key "AutoHideSplashScreen" is not defined and will default to "TRUE"
<修正対象ファイル>
XCodeから下記ファイルを検索し修正
CDVWKInAppBrowser.m
<該当箇所 変更前> コメントアウトしています。
//- (void)openInSystem:(NSURL*)url
//{
//    if ([[UIApplication sharedApplication] openURL:url] == NO) {
//        [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]];
//        [[UIApplication sharedApplication] openURL:url];
//    }
//}
<該当箇所 変更後> 上記該当コードを下記に書き換え
- (void)openInSystem:(NSURL*)url
{
    if (url == nil) {
        return;
    }

    // 新しいAPIを使用してURLを開く
    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
        if (!success) {
            // URLを開けなかった場合の処理
            NSLog(@"Failed to open URL: %@", url);
            [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]];
            
            // 再度URLを開こうとするのは不要なので削除
        } else {
            NSLog(@"Successfully opened URL: %@", url);
        }
    }];
}

BACK