monotouch对接当乐

#import <Foundation/Foundation.h>

#import <UIKit/UIKit.h>

#import "DownjoySDK/Downjoy.h"

#import "DownjoySDK/DownjoyDelegate.h"

#import "DownjoySDK/PaymemtParam.h"


typedef void (^charge_cb) (NSInteger nType);


@interface UseStaticLibraryDj : UIViewController <DownjoyDelegate>

{

    Downjoy *_demoVC;

    DownjoyLoginResult *_downjoyLoginResult;

    DownjoyMemberInfoResult *_downjoyMemberInfoResult;

    

    UIViewController *windowViews;

}

@property(retain, nonatomic) Downjoy *demoVC;

@property(retain, nonatomic) DownjoyLoginResult *downjoyLoginResult;

@property(retain, nonatomic) DownjoyMemberInfoResult *downjoyMemberInfoResult;


+(UseStaticLibraryDj *)Isrance;


/** 登陆 */

-(void)loginDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel;

/** 登出(注销) */

-(void)loginOutDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel;

/** 支付 */

-(void)PayForCoinDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel;

/** 个人中心 */

-(void)memberCenterDj;

/** 判断是否有当乐账号登录 */

-(BOOL)downjoyIsLoginDj;

/** 得到当乐ID */

-(NSNumber* )getDjMid;

/** 得到当乐用户名 */

-(NSString* )getDjUserName;

/** 得到当乐token */

-(NSString* )getDjToken;

/** 设置一个view进来 */

-(void)setGameView:(id)windowView;


@end








#import "UseStaticLibraryDj.h"

#import "EmunHead.h"


static charge_cb   call_backs[10] = {NULL};


@interface UseStaticLibraryDj ()


@end


@implementation UseStaticLibraryDj


static UseStaticLibraryDj *instance = nil;

+(UseStaticLibraryDj *)Isrance

{

    if (instance == nil)

    {

        instance = [[UseStaticLibraryDj alloc] init];

    }

    return instance;

}


-(id) init{

    if(self = [super init]){

        

    }

    return self;

}


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


-(void) loadView{

}


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view.

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


//实现Downjoy协议


-(void) loginSuccess:(DownjoyLoginResult *)loginResult{

    //self.dicDownjoyLoginInfo=dictParm;

    self.downjoyLoginResult = loginResult;

//    NSString *content = [NSString stringWithFormat:@"登陆/注册成功\n乐号:%@\n用户名:%@\n昵称:%@\nstate参数:%@\n令牌:%@",

//                         loginResult.memberId, loginResult.username,

//                         loginResult.nickname, loginResult.state, loginResult.token];

//    [SINGLETON myAlertView:nil message:content delegate:self buttons:nil];

    

    [self->windowViews dismissModalViewControllerAnimated:YES];

    [self->windowViews removeFromParentViewController];

    

    if (call_backs[Login_success] != NULL) {

        call_backs[Login_success](Login_success);

    }

}


//登陆出错或取消回调

-(void) loginError:(DownjoyLoginResult *)loginResult {

    /*传回来的dicParm有五个参数

     error_code:错误代码

     error_msg:错误描述

     state:登陆时客户端传给Downjoy的数据,登陆成功后会原样传回

     */

    //self.dicDownjoyLoginInfo = dicParm;

//    NSString *content = [NSString stringWithFormat:@"登陆出错\n错误码:%@\n错误描述:%@\nstate参数:%@",

//                         loginResult.errorCode,loginResult.errorMsg,loginResult.state];

//    [SINGLETON myAlertView:nil message:content delegate:self buttons:nil];

    [self->windowViews dismissModalViewControllerAnimated:YES];

    [self->windowViews removeFromParentViewController];

    if (call_backs[Login_fail] != NULL) {

        call_backs[Login_fail](Login_fail);

    }

}


//获取用户信息成功回调

- (void) readMemberInfo: (DownjoyMemberInfoResult *)memberInfo {

    /*1.获取用户信息成功时,传回来的dicMemberInfo有五个参数

     avatar_url:用户头像地址

     created_date:建立日期

     error_code:状态码

     username:用户名

     nickname:昵称

     memberId:乐号

     gender:性别

     level:级别

     token:安全令牌

     

     2.获取用户信息失败时,传回来的dicMemberInfo有两个参数

     error_code:错误代码

     error_msg:错误描述

     */

    self.downjoyMemberInfoResult = memberInfo;

    NSString *content=[NSString stringWithFormat:@"mid:%@,username:%@,nickname:%@,token:%@", _downjoyMemberInfoResult.memberId, _downjoyMemberInfoResult.username, _downjoyMemberInfoResult.nickname, _downjoyMemberInfoResult.token];

    

    NSString *unicodeStr = [SINGLETON unicodeToUtf8:content];

    [SINGLETON myAlertView:nil message:unicodeStr delegate:self buttons:nil];

}


//注销回调

- (void) logoutSuccess {

    NSString *content=[NSString stringWithFormat:@"logout ok"];

    [SINGLETON myAlertView:nil message:content delegate:self buttons:nil];

    if (call_backs[LoginOut_success] != NULL) {

        call_backs[LoginOut_success](LoginOut_success);

    }

}


-(void) logoutError:(NSString *)errorCode errorMsg:(NSString *)errorMsg{

    NSString *content=[NSString stringWithFormat:@"logout error:%@, %@", errorCode, errorMsg];

    [SINGLETON myAlertView:nil message:content delegate:self buttons:nil];

    if (call_backs[LoginOut_fail] != NULL) {

        call_backs[LoginOut_fail](LoginOut_fail);

    }

}


//支付取消回调

- (void) payBack {

    [self dismissModalViewControllerAnimated:YES];

}


-(void) memberCenterError:(NSString *)errorCode errorMsg:(NSString *)errorMsg{

    NSString *content = [NSString stringWithFormat:@"进入个人中心出错\n错误码:%@\n错误描述:%@\n",errorCode,errorMsg];

    [SINGLETON myAlertView:nil message:content delegate:self buttons:nil];

    [self->windowViews dismissModalViewControllerAnimated:YES];

}


//自定义函数


-(void) memberCenterDownjoy{

    _demoVC =[[Downjoy alloc] initWithBaseInfo:app_id appKey :app_key delegate :self];

    [self->windowViews presentModalViewController:_demoVC animated:YES];

    [_demoVC downjoyMemberCenter];

    NSLog(@"运行到个人中心代码");

//    [_demoVC release];

}


-(void) loginDownjoy{

    _demoVC =[[Downjoy alloc] initWithBaseInfo:app_id appKey :app_key delegate :self];

//    [[self->windowViews view] addSubview:_demoVC.view];

    [self->windowViews presentModalViewController:_demoVC animated:YES];

//    [self presentModalViewController:_demoVC animated:YES];

    [_demoVC downjoyLogin:@"1" state:@"需要保持的数据"];

}


//获取用户信息例子

- (void) readInfoDownjoy {

    _demoVC =[[Downjoy alloc] initWithBaseInfo:app_id appKey :app_key delegate :self];

    DownjoyMemberInfoResult *result = [_demoVC downjoyReadMemberInfo];

    NSString *content=[NSString stringWithFormat:@"mid:%@,username:%@,nickname:%@,token:%@", result.memberId, result.username, result.nickname, result.token];

    

    NSString *unicodeStr = [SINGLETON unicodeToUtf8:content];

    [SINGLETON myAlertView:nil message:unicodeStr delegate:self buttons:nil];

    

}

//注销例子

- (void) logoutDownjoy {

    _demoVC =[[Downjoy alloc] initWithBaseInfo:app_id appKey :app_key delegate :self];

    [_demoVC downjoyLogout];

}


//支付例子

- (void) paymentDownjoy {

    _demoVC =[[Downjoy alloc] initWithBaseInfo:app_id appKey :app_key delegate :self];

    //支付需要 appId   appKey   mid   gid   sid   uif   utp   eif   merchantKey九个参数

    //其中  mid   gid   sid   uif   utp   eif   merchantKey  初始化在数据字典中

    if (![_demoVC downjoyIsLogin]) {

        [SINGLETON myAlertView:nil message:@"请先登陆" delegate:self buttons:nil];

        return;

    }

    NSString *paymentParameterString = [self getPaymentParameterString];

    [self->windowViews presentModalViewController:_demoVC animated:YES];

    [_demoVC downjoyPayment : paymentParameterString];

    

}


-(NSString *) getPaymentParameterString{

    NSString *merchantKey = @"UZ/$JvBl";

    NSString *mid=[[_demoVC downjoyReadMemberInfo].memberId stringValue];

    Payment *paymentParam=[[[Payment alloc] initWithBaseInfo:@"12" gid:@"1" sid:@"1" uif:mid utp:@"0" eif:@"eif" merchantKey:merchantKey] autorelease];

    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];

    [formatter setDateFormat:@"yyyyMMddHHmmss"];

    NSString *dateString = [formatter stringFromDate:[NSDate date]];

    [formatter release];

    NSString *uif=[paymentParam.uif stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSString *eif=[paymentParam.eif stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSString *backUrl=[URL_PAY_BACK stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    

    NSMutableString *strParmEncode=[NSMutableString stringWithFormat:@"mid=%@&gid=%@&sid=%@&uif=%@&utp=%@&eif=%@&bakurl=%@&timestamp=%@", paymentParam.merchantId, paymentParam.gid, paymentParam.sid, uif, paymentParam.utp, eif, backUrl, dateString];

    NSMutableString *strParm=[NSMutableString stringWithFormat:@"mid=%@&gid=%@&sid=%@&uif=%@&utp=%@&eif=%@&bakurl=%@&timestamp=%@", paymentParam.merchantId, paymentParam.gid, paymentParam.sid, paymentParam.uif, paymentParam.utp, paymentParam.eif, URL_PAY_BACK, dateString];

    NSString *strCheck=[NSString stringWithFormat:@"%@&merchantkey=%@", strParm, paymentParam.merchantKey];

    NSString *strMd5=[[MD5Util md5:strCheck] lowercaseString];

    NSString *strUrlFull = [NSString stringWithFormat:@"%@&verstring=%@", strParmEncode, strMd5];

    return strUrlFull;

}


//登陆

-(void)loginDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel

{

    call_backs[Login_success] = [suc copy];

    call_backs[Login_fail] = [fail copy];

    call_backs[Login_cancel] = [cancel copy];

    

    [self loginDownjoy];

}

//注销

-(void)loginOutDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel

{

    call_backs[LoginOut_success] = [suc copy];

    call_backs[LoginOut_fail] = [fail copy];

    call_backs[LoginOut_cancel] = [cancel copy];

    

    [self logoutDownjoy];

}

//个人中心

-(void)memberCenterDj

{

    [self memberCenterDownjoy];

}

//判断是否登录当乐

-(BOOL)downjoyIsLoginDj

{

    _demoVC =[[Downjoy alloc] initWithBaseInfo:app_id appKey :app_key delegate :self];

    //支付需要 appId   appKey   mid   gid   sid   uif   utp   eif   merchantKey九个参数

    //其中  mid   gid   sid   uif   utp   eif   merchantKey  初始化在数据字典中

    BOOL isLognin = [_demoVC downjoyIsLogin];

    [_demoVC release];

    return isLognin;

}

//支付

-(void)PayForCoinDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel

{

    call_backs[LoginOut_success] = [suc copy];

    call_backs[LoginOut_fail] = [fail copy];

    call_backs[LoginOut_cancel] = [cancel copy];

    

    [self paymentDownjoy];

}


-(NSNumber* )getDjMid

{

    return self.downjoyLoginResult.memberId;

}


-(NSString* )getDjUserName

{

    return self.downjoyLoginResult.username;

}


-(NSString* )getDjToken

{

    return self.downjoyLoginResult.token;

}


-(void)setGameView:(id)windowView

{

    self->windowViews = windowView;

}


@end






#ifndef UseStaticLibraryDJ_EmunHead_h

#define UseStaticLibraryDJ_EmunHead_h


#define   app_id    @"用具体的"

#define   app_key   @"用具体的"


enum {

    Login_success,

    Login_fail,

    Login_cancel,

    LoginOut_success,

    LoginOut_fail,

    LoginOut_cancel,

    Buy_success,

    Buy_fail,

    Buy_cancel

};


#endif




//在mono中绑定的代码

using System;

using System.Drawing;


using MonoTouch.ObjCRuntime;

using MonoTouch.Foundation;

using MonoTouch.UIKit;


namespace MonoBindingSDKDj

{

public delegate void XMUtilityCallback (int message);

[BaseType (typeof (NSObject))]

interface UseStaticLibraryDj {

[Static, Export ("Isrance")]

UseStaticLibraryDj Isrance ();

[Export ("initApp")]

void initApp ();

//逋サ蠖

[Export ("loginDj:Fail:cb:")]

void loginDj (XMUtilityCallback suc, XMUtilityCallback fail, XMUtilityCallback cancel);

//逋サ蜃コ

[Export ("loginOutDj:Fail:cb:")]

void loginOutDj (XMUtilityCallback suc, XMUtilityCallback fail, XMUtilityCallback cancel);


//謾ッ莉

[Export ("PayForCoinDj:Fail:cb:")]

void PayForCoinDj (XMUtilityCallback suc, XMUtilityCallback fail, XMUtilityCallback cancel);

//遉セ蛹コ荳ュ蠢

[Export ("memberCenterDj")]

void memberCenterDj ();


//蛻、譁ュ譏ッ蜷ヲ譛牙ス謎ケ占エヲ蜿キ逋サ蠖

[Export ("downjoyIsLoginDj")]

bool downjoyIsLoginDj ();


//蠕怜芦蠖謎ケ蝕D

[Export ("getDjMid")]

int getDjMid ();


//蠕怜芦蠖謎ケ千畑謌キ蜷

[Export ("getDjUserName")]

string getDjUserName ();


//蠕怜芦蠖謎ケ慎oken

[Export ("getDjToken")]

string getDjToken ();


[Export ("setGameView:")]

void setGameView(NSObject windowView);

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值