收藏
回答

【iOS 14.4,开发语言swift】,微信授权成功后,返回APP没有触发回调?

版本信息:

1)WechatOpenSDK(1.8.7.1) 2)微信版本8.0.2 3)iOS 14.4 4)swiftUI(有 AppDelegate.swift 和 SceneDelegate.swift)

一、下图为自检结果:

二、成功接入并启动了微信,授权成功后返回APP 不触发回调??

以下是回调函数,在AppDelegate.swift 和 SceneDelegate.swift 里 均不触发


求高人指点,非常感谢!

很棘手!

回答关注问题邀请回答
收藏

6 个回答

  • look
    look
    01-26

    用这个方法可以成功回调:

    SwiftUI中的不同回调机制

    在SwiftUI中,当从微信App切换回第三方App时并不会调用AppDelegate中的application(_ app: _, open url: _, options: _)方法。

    在SwiftUI中由于SceneDelegate角色功能的加入,原来AppDelegate中部分功能现在都放到了SceneDelegate中。

    其中就包括原来AppDelegate中的application(_ app: _, open url: _, options: _)方法,而且它的名称也略微发生了变化。

    So,我们只需要将微信认证成功的回调放到SceneDelegate中的scene(_ scene: _, openURLContexts URLContexts: _)方法中即可。


    问题解决

    代码实现

    将原来AppDelegate中微信认证回调的代码放到SceneDelegate中的如下方法即可:

    class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    
        var window: UIWindow?
    
        func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
            if let url = URLContexts.first?.url, url.host == "oauth" {
                // 在这里处理微信登录的回调
            }
        }
    }
    复制
    

    现在,在SwiftUI中微信认证回调已可以正常被调用了。


    01-26
    有用
    回复
  • 独钓寒江
    独钓寒江
    2022-12-15

    我用同一套资料,在OC项目中就可以回调onresp方法,swift项目就是不行。swift项目wxlog:Error:set token fail, errCode:4, errLog:wx token[] or contextId[(null)] is nil!出现这个错误,请问你解决了吗


    2022-12-15
    有用
    回复
  • Matrix
    Matrix
    2022-03-29

    楼主解决了吗?我也遇到一样的问题

    2022-03-29
    有用
    回复
  • 声控周不鸽
    声控周不鸽
    2021-12-15

    请教一下swiftui如何调用微信登录

    2021-12-15
    有用
    回复
  • 风
    2021-04-10

    o c可以 swift 是不是 不支持?而且苹果App Store 审核不通过 所以一直也推广不起来?


    2021-04-10
    有用
    回复 2
    • 风
      2021-04-10
      我看到网上有个app 做的是微信授权登陆的 苹果就是不让他过,所以微信的ios授权机制到底用在哪里?
      2021-04-10
      回复
    • Gavin
      Gavin
      2021-05-26
      解决了吗
      2021-05-26
      回复
  • JM冯爷
    JM冯爷
    2021-04-08

    我也想知道怎么解决。。。

    2021-04-08
    有用
    回复
登录 后发表内容
问题标签