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);
}
}];
}