houmee实习日记4.2-4.9<2>

这个参考很不错:http://blog.csdn.net/wanghexu09008126/article/details/17232395

这边我们来上c++跟oc桥接部分的代码,然后传给lua端

(noticeSender.h/noticeSender.cpp)

这两个是用来传给lua的,c++,与lua交互

//
//  NoticeSenter.h
//  HeroWar
//
//  Created by huale_mac on 15-1-21.
//
//

#ifndef __HeroWar__NoticeSenter__
#define __HeroWar__NoticeSenter__


enum {
    DO_LOGIN_SUCCEED = 1001,   //登陆成功
    DO_LOGIN_FAIL,      //登陆失败
    DO_LOGOUT_SUCCEED,  //登出游戏成功
    DO_PAY_SUCCEED,    //支付成功
};

#include <stdio.h>
#include "cocos2d.h"
#include "string.h"

using namespace cocos2d;


class NoticeSenderToLua :public cocos2d::CCObject{
public:
    static NoticeSenderToLua* sharedNotification();
    void SendMsgToLua(int eventId , void* obj);
};

#endif /* defined(__HeroWar__NoticeSenter__) */
//
//  NoticeSenter.cpp
//  HeroWar
//
//  Created by huale_mac on 15-1-21.
//
//

#include "NoticeSender.h"

static NoticeSenderToLua* _notification = NULL;



NoticeSenderToLua* NoticeSenderToLua::sharedNotification()
{
    if(!_notification)
    {
        _notification = new NoticeSenderToLua();
    }
    return _notification;
}

void NoticeSenderToLua::SendMsgToLua(int eventId , void* obj)
{
    char temp[10] = {0};
    std::sprintf(temp, "%d",eventId);
    cocos2d::CCNotificationCenter::sharedNotificationCenter()->postNotification(temp, (cocos2d::CCObject*)obj );
}

继续,到(SDKlmpBridge.h/SDKlmpBridge.mm)、.mm是c++跟OC混编文件(我oc就学了几天,就被逼着写了,在公司跟在学校就是不同。哎。。。在学校就是撸)

//
//  SDKImplBridge.h
//  HeroWar
//
//  Created by huale_mac on 15-1-21.
//
//

#ifndef HeroWar_SDKImplBridge_h
#define HeroWar_SDKImplBridge_h
#include "cocos2d.h"
//#include "ThepayTest.h"
class SDKImplBridge : public cocos2d::CCObject
{
public:
    static SDKImplBridge* sharedInstance();
    void end();
    void isSDKLogin();
    void doInit();
    void doLogin( int loginHandler );
    void doLogout();
    bool showUserCenter();
    void reCharge(int gold,int parambillId, char* parambillName,int paramserverId,int paramroleId,int paramgoodId, char* customParam);
//    CC_SYNTHESIZE( int, m_loginHandler, LoginHandler );
    static int m_loginHandler;
    static std::string m_sid;
    void executeLoginCallback( void* sid, bool bLogin  );
    

};

#endif
//
//  SDKImplBridge.cpp
//  HeroWar
//
//  Created by huale_mac on 15-1-21.
//
//

#include <stdio.h>
#include "SDKImplBridge.h"
#include "SDKImpl.h"
#include "cocos2d.h"
#include "CCLuaEngine.h"

USING_NS_CC;

static SDKImplBridge* instance = NULL;
int SDKImplBridge::m_loginHandler = 0;
std::string SDKImplBridge::m_sid = "";
SDKImplBridge* SDKImplBridge::sharedInstance()
{
    if (! instance)
    {
        instance = new SDKImplBridge();
        m_loginHandler = 0;
    }
    
    return instance;
}


void SDKImplBridge::executeLoginCallback( void* sid, bool bLogin )
{
    if (SDKImplBridge::m_loginHandler) {
        CCLuaEngine* pEngine = (CCLuaEngine*)(CCScriptEngineManager::sharedManager()->getScriptEngine());
        cocos2d::CCLog("C++层打印= %s",(const char*)sid);
        pEngine->getLuaStack()->pushString( (const char*) sid );
        pEngine->getLuaStack()->pushBoolean( bLogin );
        pEngine->getLuaStack()->executeFunctionByHandler(SDKImplBridge::m_loginHandler, 2);
        pEngine->getLuaStack()->removeScriptHandler(SDKImplBridge::m_loginHandler);
        SDKImplBridge::m_loginHandler = 0;
    }
}

void SDKImplBridge::end()
{
    if (instance)
    {
        delete instance;
        instance = NULL;
    }
    
}

void SDKImplBridge::isSDKLogin()
{
    [[SDKImpl instance ]isSDKLogin ];
}

void SDKImplBridge::doInit()
{
    [[SDKImpl instance]doInit];
}

void SDKImplBridge::doLogin(int loginHandler )
{
    SDKImplBridge::m_loginHandler = loginHandler;
    [[SDKImpl instance]doLogin];
}

void SDKImplBridge::doLogout()
{
    [[SDKImpl instance]doLogout];
}

bool SDKImplBridge::showUserCenter()
{
    return[[SDKImpl instance]showUserCenter];
}

void SDKImplBridge::reCharge(int gold,int parambillId, char* parambillName,int paramserverId,int paramroleId,int paramgoodId, char* customParam)
{
    [[SDKImpl instance]exchangeGoods:gold billId:parambillId billName:parambillName serverId:paramserverId roleId:paramroleId goodId:paramgoodId extraParam:customParam];
}

接着:------------------(SDKlmpl.h/SDKlmpl.mm)----------------在这里我们来调用之前<1>里面写过的(ThepayTest.h/m /MyStoreObserver.h/m)里面的调用

//
//  SDKImpl.h
//  moshou
//
//  Created by DT on 14-9-23.
//
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <NdComPlatform/NdComPlatform.h>//delete
#import <StoreKit/StoreKit.h>
#import "ThepayTest.h"
#import "MyStoreObserver.h"


@interface SDKImpl : NSObject
{
    
}

+(SDKImpl *) instance;
-(void) doInit;  //had change
-(bool) isSDKLogin;
-(void) doLogin;  //had change
-(void) doLogout;
-(bool) showUserCenter;
-(void) exchangeGoods:(int)gold      //had change
               billId:(int)parambillId
             billName:(const char *)parambillName
             serverId:(int)paramserverId
               roleId:(int)paramroleId
               goodId:(int)paramgoodId
           extraParam:(const char* )customParam;


@property(readwrite,assign) bool bLogin;
@property(readwrite,assign) bool bInit;
@end
//
//  SDKImpl.m
//  moshou
//
//  Created by DT on 14-9-23.
//
//

#import "SDKImpl.h"
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include "cocos2d.h"
#include "NoticeSender.h"
#include "SDKImplBridge.h"
#import <NdComPlatform/NdComPlatform.h>
#import <NdComPlatform/NdCPNotifications.h>
#import <NdComPlatform/NdComPlatformError.h>



//
//static int const APP_ID = 116277;
//static NSString *const APP_KEY = @"c28c0f2a464d65e39591e419dfdfbe5049aacf8df26b6502";


static SDKImpl *instance;                    //静态类对象,作用于全局
@implementation SDKImpl

@synthesize bLogin = _bLogin;
@synthesize bInit = _bInit;
+(SDKImpl *) instance                        //静态类方法+
{
    if(!instance)
        instance = [[SDKImpl alloc] init];   //如果这个对象不存在,初始化他  instance = [[SDKImpl alloc] init]; return instance;返回instance
    return instance;
}

#pragma mark - < 调用接口 > -
- (void) doInit
{
    NSLog(@"初始化开始");
    [self setBLogin:false];
    [self setBInit:false];
    NSLog(@"初始化结束");
    
}

-(bool) isSDKLogin
{
     return false;
}

- (void)doLogin
{
    printf("sdkimpl dologin");
//    if ( !self.bInit ) {
//        [self doInit];
//    }
//    //注册监听消息
//    
//    [[NdComPlatform defaultPlatform] NdLogin:0];
   
}

- (void)doLogout
{
    [[NdComPlatform defaultPlatform] NdLogout:0];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

-(bool) showUserCenter
{
    [[NdComPlatform defaultPlatform] NdEnterAppCenter:0];
    return true;
}


//ios storekit  paymentCallBack
- (void) exchangeGoods:(int)gold            //is here
            billId:(int)parambillId
          billName:(const char *)parambillName
          serverId:(int)paramserverId
            roleId:(int)paramroleId
            goodId:(int)paramgoodId
            extraParam:(const char* )customParam
{
    NSLog(@"enter recharge!!!!");  //请求产品信息
    ThepayTest * requestbuy1 = [[ThepayTest alloc] init];
    [requestbuy1 requestProductData];
    NSLog(@"exchangeGoods 's gold is %d" , gold);
    NSLog(@"print paramgoodID, %d" ,paramgoodId);// 这个1-7
    NSLog(@"parambillName,%s",parambillName);
//    NSLog(@"给我打印一下parambillID, %s" ,parambillName);
    ThepayTest * requestbuy2 = [[ThepayTest alloc] init];  //必须要用第二个对象来进行购买参数传递
    [requestbuy2 buy:gold goldnum:paramgoodId];
    
    NSLog(@"payment success!"); //
    
//2改    MyStoreObserver * myPayment = [[MyStoreObserver alloc] init];
//1改  [myPayment paymentQueue:payment updatedTransactions:payment];利用SKPaymentQueue里面的单例方法来调用然后添加列队
    [[SKPaymentQueue defaultQueue] addTransactionObserver:[MyStoreObserver instance]];
    
    
}

@end
到此storekit接入的代码基本完成了。


转载于:https://my.oschina.net/u/1862653/blog/401922

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值