我正在尝试将微信共享功能添加到我的项目中.但是,SDK文件,文档,开发指南和示例项目都在Objective-C中.我正在Swift中编写我的项目.
我将以下SDK文件添加到我的项目中
libWeChatSDK.a
WechatAuthSDK.h
WXApi.h
WXApiObject.h
Run Code Online (Sandbox Code Playgroud)
我尝试按照这个答案的建议使用桥接头.
MyProject的桥接,Header.h
#import "WXApi.h"
Run Code Online (Sandbox Code Playgroud)
但是,我仍然无法在我的代码中使用WeChat API.我收到以下错误:
WXApiObject.h
- (void) setThumbImage:(UIImage *)image; // Expected a type
Run Code Online (Sandbox Code Playgroud)
WXApi.h
+(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id<WXApiDelegate>) delegate;
// Expected a type
Run Code Online (Sandbox Code Playgroud)
和
<unknown>:0: error: failed to import bridging header '[my path]/MyProject-Bridging-Header.h'
Run Code Online (Sandbox Code Playgroud)
有没有人成功地将WeChat API与Swift项目一起使用?我很乐意看到一个简短的步骤列表或一些示例代码.我不介意是否有任何补充链接到中国资源.
Sur*_*gch 23
有关此流程的更新更新,请参阅@ chengsam的答案.
该官方微信开发英文说明似乎是过时的和不完整的.在中国的指令是更好,但只能处理的Objective-C.以下步骤显示如何将WeChat(微信微信)SDK添加到您的项目中.
英文网站是dev.wechat.com.不过,我无法在英文网站上成功注册.我最终使用中文网站:open.weixin.qq.com.如何做到这一点超出了这个答案的范围,但如果你不懂中文,谷歌翻译可以提供帮助.请注意,您可能还需要在中国的电话号码.
在您的应用程序获得批准后(您只需要描述您的应用程序,无需提供二进制文件或源代码),您将获得一个应用程序ID,您将在代码中使用该ID.
您可以尝试使用英文网站上的SDK,但由于在撰写本文时在中文网站上似乎更新,所以我下载了SDK以获取这些说明.
我从这个页面下载了SDK ,WeChat SDK 1.6.2版的链接在这里.但是,您可能希望使用最新版本,无论将来是什么.
为了组织起见,我将所有文件放在项目导航器中的同一组中.(实际文件仍在项目的根文件夹中.)
错误修复:
在SDK 1.6.2中,问题中描述的问题出现并由@ Anbu.Karthik的答案解决.只需添加#import <UIKit/UIKit.h>到WXApiObject.h.(您实际上可以替换#import <Foundation/Foundation.h>它.)如果您在1.6.2之后使用某些SDK版本,这可能不再是一个问题,因此您可能只想在修改SDK文件之前完成其他步骤.
请注意,一些SDK文件是Objective-C头文件(.h).要在Swift项目中使用它们,您需要向项目添加Bridging Header文件.添加一个新文件(文件>新建>文件...> iOS>源>头文件)并调用它YourProjectName-Bridging-Header.h.
将以下行添加到此文件中.
#import "WXApi.h"
Run Code Online (Sandbox Code Playgroud)
在我的项目中,这是我的桥接头文件中唯一的一行,因为它是WeChat SDK所需的唯一一行.(当我创建头文件时,还有其他一些自动生成的代码行,但我只是评论它们因为我不知道它们做了什么.如果我发现它们有用,我会回来编辑这个答案. )
现在无需在Swift代码文件中导入任何WeChat SDK文件.
转到项目的" 常规"选项卡,然后向下滚动到" 链接的框架和库".单击加号(+)按钮以添加以下必需的框架和库.
它现在应该是这样的:
将CoreTelephony在自述中提到和libc++在网上SDK安装说明书中提及的而不是相反.我只是添加它们都是安全的.如果实际上不需要其中任何一个,请随时发表评论.
转到项目的" 信息"选项卡,然后展开" URL类型"项.
添加标识符所在的类型,weixinURL Schemes是您使用微信成功注册应用程序后应该获得的AppID.
编辑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
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
参阅可选的东西,你可以在做样品演示程序onReq和onResp.(当前链接在这里,但如果该链接被破坏,那么请在官方微信开发者文档中查找Sample Demo.)
右键单击Info.plist并选择Open As> Source Code.然后在最终之前添加以下两个键</dict>:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
根据SDK附带的自述文件,这是必要的,因为iOS 9限制了http访问.
此时,您应该能够在Swift代码中开始使用WeChat API.我稍后可能会添加更多API示例,但以下是概念验证.
发一个短信
let message = SendMessageToWXReq()
message.text = "Hello WeChat"
message.bText = true
message.scene = Int32(WXSceneSession.rawValue) // WXSceneSession
WXApi.sendReq(message)
Run Code Online (Sandbox Code Playgroud)
我无法使用Objective-C定义的枚举WXSceneSession,所以我只使用了它的整数值.可能有更好的解决方案,但现在可行.
上面的解决方案使用Xcode 7.2和iOS 9.2进行了测试.
| 归档时间: |
|
| 查看次数: |
5828 次 |
| 最近记录: |