美文网首页
cocos2d-x C++和IOS OC的交互

cocos2d-x C++和IOS OC的交互

作者: 醉影 | 来源:发表于2018-11-06 21:35 被阅读10次

举例:游戏应用中,比如我们要获取当前的网络状态。

所采用的网络检查库:
苹果官方 Reachability https://github.com/tonymillion/Reachability.git

1.创建 IOSNetWork.h 和 IOSNetWork.mm
.mm 可以同时使用OC 、c 和c++ 代码

#ifndef IOSNetWork_h
#define IOSNetWork_h
#include <iostream>
#include <vector>
class IOSNetWorkDelegate{
public:
    virtual ~IOSNetWorkDelegate(){};
    //回调方法
    virtual void networkResult(int networkcode,std::string &identifier ) = 0;
};
class IOSNetWork {
public:
    IOSNetWork();
    IOSNetWorkDelegate * delegate;
    void getNetWorkStatus();//获取网络状态
    
};
#endif /* IOSNetWork_h */
#import <Foundation/Foundation.h>
#import "Reachability.h"
#include "IOSNetWork.h"

IOSNetWork::IOSNetWork(){
    
}

void IOSNetWork::getNetWorkStatus(){
    
    Reachability* reach = [Reachability reachabilityWithHostname:@"www.baidu.com"];
    reach.reachableBlock = ^(Reachability*reach)
    {

        NSString * type = @"";
        if (reach.isReachableViaWiFi) {
            type = @"WIFI";
        }
        else if (reach.isReachableViaWWAN){
            type = @"WWAN";
        }
        
        dispatch_async(dispatch_get_main_queue(), ^{

              std::string identifier([type UTF8String]);
            this->delegate->networkResult(200,identifier);
        });
    };
    
    reach.unreachableBlock = ^(Reachability*reach)
    {
          NSString * type = @"";
        NSLog(@"UNREACHABLE!");
        std::string identifier([type UTF8String]);
        this->delegate->networkResult(404,identifier);
    };
    
    // Start the notifier, which will cause the reachability object to retain itself!
    [reach startNotifier];
}

2.创建bridge

//IOSNetWork_Bridge.h

#ifndef IOSNetWork_Bridge_h
#define IOSNetWork_Bridge_h
#import "IOSNetWork.h"
class IOSNetWork_Bridge: public IOSNetWorkDelegate {
public:
    IOSNetWork_Bridge();
     ~IOSNetWork_Bridge();
    IOSNetWork * network;
    void requestGetNetWorkStatus();//获取网络状态
    virtual void networkResult(int networkcode,std::string &identifier);//回调
};

#endif /* IOSNetWork_Bridge_h */

//IOSNetWork_Bridge.cpp

#include <stdio.h>
#include "IOSNetWork_Bridge.h"
IOSNetWork_Bridge::IOSNetWork_Bridge(){
    network = new IOSNetWork();
    network -> delegate = this;
}
IOSNetWork_Bridge::~IOSNetWork_Bridge(){
    delete network;
}

void IOSNetWork_Bridge::requestGetNetWorkStatus(){
    network -> getNetWorkStatus();
}

void IOSNetWork_Bridge::networkResult(int networkcode,std::string &identifier){
    log(networkcode);
}

//具体调用

  IOSNetWork_Bridge  * netBridge =  new IOSNetWork_Bridge();
    netBridge -> requestGetNetWorkStatus();

相关文章

  • lua oc

    Lua OC 交互头文件搜索路径 OC与Lua交互,需倒入的原文件地址:frameworks/cocos2d-x/...

  • cocos2d-x C++和IOS OC的交互

    举例:游戏应用中,比如我们要获取当前的网络状态。 所采用的网络检查库:苹果官方 Reachability http...

  • Cocos2d-x认识

    cocos2d-x简介: 了解Cocos2d-x :C++语言,c语言。 可以运行在安卓和iOS等平台 跨平台co...

  • iOS 的JS 和 OC 交互(二)

    iOS 的JS 和 OC 交互(一) 好吧 今天继续再来搞搞 这个 交互的问题 OC 怎样可以拦截到 JS 的调...

  • ios 开发OC 和 JS 交互

    ios 开发OC 和 JS 交互 最近遇到了关于 oc 和 js 交互的功能, 记录一下就当是是做了笔记的 开发环...

  • Lua Object-C 交互

    OC与Lua交互,需倒入的原文件地址:frameworks/cocos2d-x/cocos/scripting/l...

  • [IOS开发攻略] - js与OC交互(WKWebView)

    [IOS开发攻略] - js与OC交互(

  • uiwebView与OC交互

    WebViewJavaScriptBridge是IOS中JS和OC交互的常用框架,支持以下两种调用: 1. OC端...

  • iOS 中的JS交互

    在iOS的webview开发中,都会用到和HTML交互。一般JS的交互一般有几种: OC调用JS JS调用OC 动...

  • JS与OC的交互(iOS7前后对比)

    16/07/20 JS与OC的交互 iOS7之前 通过拦截URL的方式实现交互 在iOS7之前,实现js与oc的交...

网友评论

      本文标题:cocos2d-x C++和IOS OC的交互

      本文链接:https://www.haomeiwen.com/subject/orypxqtx.html