#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=%@×tamp=%@", paymentParam.merchantId, paymentParam.gid, paymentParam.sid, uif, paymentParam.utp, eif, backUrl, dateString];
NSMutableString *strParm=[NSMutableString stringWithFormat:@"mid=%@&gid=%@&sid=%@&uif=%@&utp=%@&eif=%@&bakurl=%@×tamp=%@", 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);
}
}