<option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
<output id="tpnx7"></output>
<output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    首页 > 上网技巧 > 电脑小技巧 > 如何将WeChat API添加到Swift项目中

    如何将WeChat API添加到Swift项目中

    时间:2019-03-19 14:49 作者:QQ地带 我要评论

    我正在尝试为我的项目添加WeChat共享功能.但是SDK files,documentation,development guides和sample project都在Objective-C中.我正在Swift中编写我的项目.
    我试过的
     
    我将以下SDK文件添加到我的项目中
     
    libWeChatSDK.a
    WechatAuthSDK.h
    WXApi.h
    WXApiObject.h
    我尝试按照this answer的建议使用桥接头.
     
    MyProject的桥接,Header.h
     
    #import "WXApi.h"
    错误
     
    但是,我仍然无法在我的代码中使用WeChat 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' 
     
    有没有人成功地将WeChat API与Swift项目一起使用?我很乐意看到一个简短的步骤列表或一些示例代码.我不介意是否有任何补充链接到中国资源.
     
    有关此过程的更新更新,请参阅@chengsam’s answer.
    如何在Swift项目中使用WeChat SDK
     
    official WeChat developer English instructions似乎已过时且不完整. Chinese instructions更好但只处理Objective-C.以下步骤显示如何将WeChat(微信微信)SDK添加到您的项目中.
     
    申请微信App ID
     
    英文网站是dev.wechat.com.但我无法在英文网站上成功注册.我最终使用中文网站:open.weixin.qq.com.如何做到这一点超出了这个答案的范围,但如果你不懂中文,谷歌翻译可以提供帮助.请注意,您可能还需要在中国的电话号码.
     
    在您的应用获?#38376;?#20934;后(您只需要描述您的应用,无需提供二进制或源代码),您将获得一个应用ID,您将在代码中使用该ID.
     
    ?#30053;?/u>微信SDK
     
    您可以尝试使用英文网站上的SDK,但由于在撰写本文时在中文网站上似乎更新,所以我在这里?#30053;豐DK以获取这些?#24471;?
     
    我从this page?#30053;?#20102;SDK,微信SDK版本1.6.2?#29287;?#25509;是here.你可能想要使用最新的版本,不管将来是什么.
     
    将SDK文件复制到Xcode项目中
     
    为了组织起见,我将所有文件放在项目导航器中的同一组中. (?#23548;?#25991;件仍在项目的根文件夹中.)
     
    enter image description here
     
    错误修复:
     
    在SDK 1.6.2中,问题中描述的问题出现并由@Anbu.Karthik’s answer解决.只需添加#import< UIKit / UIKit.h>到WXApiObject.h. (您?#23548;?#19978;可以用它替换#import< Foundation / Foundation.h>.)如果您在1.6.2之后使用某些SDK版本,这可能不再是一个问题,因此您可能只想在修改之前完成其他步骤SDK文件.
     
    添加桥接标头
     
    请注意,一些SDK文件是Objective-C标头(.h)文件.要在Swift项目中使用它们,您需要将Bridging Header文件添加到项目中.添加一个新文件(文件>新建>文件…> iOS>源>标题文件),并将其命名为YourProjectName-Bridging-Header.h.
     
    将以下行添加到此文件中.
     
    #import "WXApi.h"
    在我的项目中,这是我的桥接头文件中唯一的一行,因为它是WeChat SDK所需的唯一一行. (当我创建头文件时,还有一些其他自动生成的代码行,但我只是评论它?#19988;?#20026;我不知道它们做了什么.如果我发现它们有用,我会回来编辑这个答案. )
     
    有关添加桥接标头的更多帮助,请参见here,here和here.
     
    现在无需在Swift代码文件中导入任何WeChat SDK文件.
     
    添加所需?#30446;?#26550;和库
     
    转到项目的“常规”选项卡,然后向下滚动到“链接?#30446;?#26550;和库”.单击加号()按钮以添加以下必需?#30446;?#26550;和库.
     
    > libc .tbd
    > CoreTelephony.framework
    > libsqlite3.tbd
    > libz.tbd
    > SystemConfiguration.framework
    > libWeChatSDK.a(如果您已将其复制到项目中,那么这个应该已存在.)
     
    它现在应该是这样的:
     
    enter image description here
     
    自述文件中提到了CoreTelephony,并且在线SDK安?#20843;得?#20013;提到了libc,但反之亦然.我只是添加它们都是安全的.如果?#23548;?#19978;不需要其中任何一个,请随意发表评论.
     
    添加URL方案
     
    转到项目的“信息”选项卡,然后展开“URL类型”项.
     
    添加标识符为weixin的类型,URL Schemes是您在使用微信成功注册应用程序后应该获得的AppID.
     
    enter image description here
     
    编辑AppDelegate
     
    编辑AppDelegate.swift文件以包含以下功能.请务必使用您的AppID而不是示例.除此之外,你几乎可以复制和?#31243;?
     
    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中执行?#30446;?#36873;操作,请参阅示例演示应用程序. (当前链接是here,但是如果该链接被破坏,那么请在官方微信开发者文档中查找示例演示.)
     
    编辑Info.plist
     
    右键单击Info.plist并选择Open As>源代码.然后在最终的< / dict>之前添加以下两个键:
     
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixin</string>
    </array>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    根据SDK附带的自述文件,这是必要的,因为iOS 9限制了http访问.
     
    使用微信API
     
    此时,您应该能够在Swift代码中开始使用WeChat 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进行了测试.

    标签: wechat
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%

    Google提供的广告

    广东十分快乐开奖结果
    <option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
    <output id="tpnx7"></output>
    <output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    <option id="tpnx7"><p id="tpnx7"><pre id="tpnx7"></pre></p></option>
    <output id="tpnx7"></output>
    <output id="tpnx7"><ruby id="tpnx7"></ruby></output>
    <output id="tpnx7"></output><acronym id="tpnx7"><button id="tpnx7"><div id="tpnx7"></div></button></acronym><code id="tpnx7"><menuitem id="tpnx7"></menuitem></code>

    码报图片2019高清图 彩经网排列五走势图 足彩半全场负胜是什么意思 浙江6+1开奖结果18138 黑龙江时时彩专家杀号 特头本期零三四打一肖 山西十一选五预测专家 福彩双色球和值走势图 海南环岛赛S82019 e球彩总进球数模拟走势图及选号 内蒙古十一选五中奖助手下载 吉林快3官网 六合彩50期 内蒙古时时彩1019 19333.钱多多心水论坛