gpt4 book ai didi

ios - 如何在 Swift 项目中添加微信 API?

转载 作者:搜寻专家 更新时间:2023-10-30 21:48:23 32 4
gpt4 key购买 nike

我正在尝试添加 WeChat将功能共享给我的项目。然而SDK files , documentation , development guides , 和 sample project都在 Objective-C 中。我正在用 Swift 编写我的项目。

我试过的

我将以下 SDK 文件添加到我的项目中

libWeChatSDK.a
WechatAuthSDK.h
WXApi.h
WXApiObject.h

我尝试遵循 this answer 上的建议用于使用桥接头。

MyProject-Bridging-Header.h
#import "WXApi.h"

错误

但是,我仍然无法在我的代码中使用微信 API。我收到以下错误:

WXApiObject.h
- (void) setThumbImage:(UIImage *)image;    // Expected a type

WXAPI.h
+(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id<WXApiDelegate>) delegate;
// Expected a type


<unknown>:0: error: failed to import bridging header '[my path]/MyProject-Bridging-Header.h' 



有没有人在 Swift 项目中成功使用过微信 API?我很想看到一个简短的步骤列表或一些示例代码。我不介意是否有任何指向中文资源的补充链接。

最佳答案

@chengsam's answer对于此过程的更新更新。
如何在你的 Swift 项目中使用微信 SDK
official WeChat developer English instructions似乎已经过时且不完整。 Chinese instructions更好,但只处理 Objective-C。下面的步骤展示了如何将微信(微信微信)SDK 添加到您的项目中。
申请微信App ID
英文站是dev.wechat.com .不过,我一直无法在英文网站上成功注册。我最终使用了中文网站:open.weixin.qq.com .如何做到这一点超出了本答案的范围,但如果您不会中文,谷歌翻译可以提供帮助。请注意,您可能还需要一个中国的电话号码。
在您的应用获得批准后(您只需描述您的应用,无需提供二进制或源代码),您将获得一个应用 ID,您将在代码中使用该 ID。
下载微信SDK
您可以尝试使用英文站点上的 SDK,但由于在撰写本文时中文站点上的情况似乎更为最新,因此我在那里下载了 SDK 以获取这些说明。
我从 this page 下载了 SDK微信SDK 1.6.2版本链接为here .不过,您可能希望使用最新版本,无论将来可能是什么版本。
将 SDK 文件复制到您的 Xcode 项目中
为了组织起见,我将所有文件放在我的项目导航器中的同一组中。 (实际文件仍在项目的根文件夹中。)
enter image description here
错误修复:
在 SDK 1.6.2 中,问题中描述的问题出现并由 @Anbu.Karthik's answer 解决.只需添加 #import <UIKit/UIKit.h>WXApiObject.h . (您实际上可以用它替换 #import <Foundation/Foundation.h>。)如果您使用的是 1.6.2 之后的某些 SDK 版本,这可能不再是问题,因此您可能只想在修改 SDK 文件之前完成其他步骤。
添加桥接头
请注意,一些 SDK 文件是 Objective-C header (.h) 文件。为了在你的 Swift 项目中使用它们,你需要在你的项目中添加一个桥接头文件。添加一个新文件(文件 > 新建 > 文件... > iOS > 源 > 头文件)并将其命名为 YourProjectName-Bridging-Header.h .
将以下行添加到此文件中。

#import "WXApi.h"
在我的项目中,这是桥头文件中唯一的一行,因为它是微信 SDK 中唯一需要的一行。 (当我创建头文件时,还有一些其他自动生成的代码行,但我只是将它们注释掉了,因为我不知道它们做了什么。如果我发现它们有用,我会回来编辑这个答案。 )
here , here , 和 here有关添加桥接头的更多帮助。
现在无需在 Swift 代码文件中导入任何微信 SDK 文件。
添加所需的框架和库
转至 一般选项卡并向下滚动到 链接的框架和库 .单击加号 (+) 按钮以添加以下必需的框架和库。
  • libc++.tbd
  • CoreTelephony.framework
  • libsqlite3.tbd
  • libz.tbd
  • SystemConfiguration.framework
  • libWeChatSDK.a(如果你把它复制到你的项目中,这个应该已经存在了。)

  • 它现在应该是这样的:
    enter image description here CoreTelephony在自述文件和 libc++ 中提到了在线 SDK 安装说明中提到过,反之亦然。为了安全起见,我只是添加了它们。如果实际上不需要其中任何一个,请随时发表评论。
    添加 URL Scheme
    转至 信息 选项卡并展开 URL 类型 元素。
    添加标识符为 weixin 的类型URL Schemes是你在微信注册成功后应该得到的AppID。
    enter image description here
    编辑 AppDelegate
    编辑您的 AppDelegate.swift 文件以包含以下函数。请务必使用您的 AppID 而不是示例。除此之外,您几乎可以复制和粘贴。
    import UIKit

    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate, WXApiDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // WeChat: replace with your AppID
    WXApi.registerApp("wx68aa08d12b601234")

    return true
    }

    func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
    return WXApi.handleOpenURL(url, delegate: self)
    }

    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    return WXApi.handleOpenURL(url, delegate: self)
    }

    func onReq(req: BaseReq!) {
    // do optional stuff
    }

    func onResp(resp: BaseResp!) {
    // do optional stuff
    }

    // ...

    }
    有关您可以在 onReq 中执行的可选内容,请参阅示例演示应用程序和 onResp . (当前链接是 here 但如果该链接已断开,请在官方微信开发人员文档中查找示例演示。)
    编辑信息.plist
    右键单击 Info.plist 并选择 Open As > Source Code。然后在最后的 </dict>之前添加以下两个键:
    <key>LSApplicationQueriesSchemes</key>
    <array>
    <string>weixin</string>
    </array>
    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>
    根据 SDK 附带的自述文件,这是必要的,因为 iOS 9 限制了 http 访问。
    使用微信API
    此时,您应该可以开始在 Swift 代码中使用微信 API。稍后我可能会添加更多 API 示例,但以下是概念证明。
    发短信
    let message = SendMessageToWXReq()
    message.text = "Hello WeChat"
    message.bText = true
    message.scene = Int32(WXSceneSession.rawValue) // WXSceneSession
    WXApi.sendReq(message)
    我无法使用 Objective-C 定义的枚举 WXSceneSession ,所以我只使用了它的整数值。可能有更好的解决方案,但这目前有效。

    上述解决方案已在 Xcode 7.2 和 iOS 9.2 上进行了测试。

    关于ios - 如何在 Swift 项目中添加微信 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718897/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com