首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >OAuthSwift SceneDelegate.swift issue ObjC+Swift项目

OAuthSwift SceneDelegate.swift issue ObjC+Swift项目
EN

Stack Overflow用户
提问于 2021-10-13 06:47:30
回答 1查看 35关注 0票数 1

现有的iOS OBJC项目中添加了OAuthSwift(2.2.0)。该项目是为iOS版本8及更早版本开发的。为了更新项目,我们不会将项目完全转换为swift。决定保留核心ObjC模块,并使用Swift为iOS 13.0开发所有新功能。更重要的是,该项目还使用了C++库和其他第三方库。

该项目有100+实现类,每个实现类都有100行代码。我从一些指南和文章中了解到,在OBJC > SWIFT转换中有很多问题。

现有的AppDelegate.m与多个控制器具有互操作性,我们目前使用的是AppDelegate.mSceneDelgate.swift之间的didFinishLaunchingWithOptions

实际的问题是:

我们试过了,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }
    if url.host == "oauth-callback" {
        OAuthSwift.handle(url: url)
    }
}

但是,场景映射导致UIWindow nil出现问题,无法显示根视图控制器。

或者,我也尝试过,在AppDelegate.m中使用openURL,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

       if ([url.host isEqualToString:@"oauth-callback"]) {
          [OAuthSwift handleWithUrl:url];
          }
          return YES;
   }

上面的内容似乎正在访问OAuthToken。然而,OAuthToken在某处迷失了方向。它将指导你了解……

我们留住Objc的策略是否可行?我们如何用OAuth解决SceneDelegate.swift和AppDelegate.m的互操作性问题?有没有关于OBJC兼容OAuth2.0框架的参考?是否可以使用SFSafariController,而不是调用OAuthSwift,访问令牌?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-10-20 18:13:26

在OBJC项目中,使用SWIFT和OBJC代码之间的互操作性功能,此url

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   if ([url.host isEqualToString:@"oauth-callback"]) {
       [OAuthSwift handleWithUrl:url];
       }

在标题中声明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@class OAuthSwift;

在Swift中声明@objc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   @objc  open class func handle(url: URL) {
            let notification = Notification(name:   OAuthSwift.didHandleCallbackURL, object: nil,
            userInfo: [CallbackNotification.optionsURLKey: url])
            notificationCenter.post(notification)
        }

已使用SFSafariViewControllerDelegate。

这个实现,没有坚持使用'OAuthSwift','~> 2.2.0‘的SceneDelegate。互操作性工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69557646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文