monotouch对接当乐
来源:互联网 发布:xz1 compact 知乎 编辑:程序博客网 时间:2024/04/28 16:15
#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 = [[UseStaticLibraryDjalloc] init];
}
returninstance;
}
-(id) init{
if(self = [superinit]){
}
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
{
[superviewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// 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->windowViewsdismissModalViewControllerAnimated:YES];
[self->windowViewsremoveFromParentViewController];
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->windowViewsdismissModalViewControllerAnimated:YES];
[self->windowViewsremoveFromParentViewController];
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=[NSStringstringWithFormat:@"mid:%@,username:%@,nickname:%@,token:%@",_downjoyMemberInfoResult.memberId,_downjoyMemberInfoResult.username,_downjoyMemberInfoResult.nickname,_downjoyMemberInfoResult.token];
NSString *unicodeStr = [SINGLETONunicodeToUtf8:content];
[SINGLETONmyAlertView:nilmessage:unicodeStr delegate:selfbuttons:nil];
}
//注销回调
- (void) logoutSuccess {
NSString *content=[NSStringstringWithFormat:@"logout ok"];
[SINGLETONmyAlertView:nilmessage:content delegate:selfbuttons:nil];
if (call_backs[LoginOut_success] !=NULL) {
call_backs[LoginOut_success](LoginOut_success);
}
}
-(void) logoutError:(NSString *)errorCode errorMsg:(NSString *)errorMsg{
NSString *content=[NSStringstringWithFormat:@"logout error:%@, %@", errorCode, errorMsg];
[SINGLETONmyAlertView:nilmessage:content delegate:selfbuttons:nil];
if (call_backs[LoginOut_fail] !=NULL) {
call_backs[LoginOut_fail](LoginOut_fail);
}
}
//支付取消回调
- (void) payBack {
[selfdismissModalViewControllerAnimated:YES];
}
-(void) memberCenterError:(NSString *)errorCode errorMsg:(NSString *)errorMsg{
NSString *content = [NSStringstringWithFormat:@"进入个人中心出错\n错误码:%@\n错误描述:%@\n",errorCode,errorMsg];
[SINGLETONmyAlertView:nilmessage:content delegate:selfbuttons:nil];
[self->windowViewsdismissModalViewControllerAnimated:YES];
}
//自定义函数
-(void) memberCenterDownjoy{
_demoVC =[[Downjoyalloc] initWithBaseInfo:app_idappKey :app_keydelegate :self];
[self->windowViewspresentModalViewController:_demoVCanimated:YES];
[_demoVC downjoyMemberCenter];
NSLog(@"运行到个人中心代码");
// [_demoVC release];
}
-(void) loginDownjoy{
_demoVC =[[Downjoyalloc] initWithBaseInfo:app_idappKey :app_keydelegate :self];
// [[self->windowViews view] addSubview:_demoVC.view];
[self->windowViewspresentModalViewController:_demoVCanimated:YES];
// [self presentModalViewController:_demoVC animated:YES];
[_demoVC downjoyLogin:@"1"state:@"需要保持的数据"];
}
//获取用户信息例子
- (void) readInfoDownjoy {
_demoVC =[[Downjoyalloc] initWithBaseInfo:app_idappKey :app_keydelegate :self];
DownjoyMemberInfoResult *result = [_demoVCdownjoyReadMemberInfo];
NSString *content=[NSStringstringWithFormat:@"mid:%@,username:%@,nickname:%@,token:%@", result.memberId, result.username, result.nickname, result.token];
NSString *unicodeStr = [SINGLETONunicodeToUtf8:content];
[SINGLETONmyAlertView:nilmessage:unicodeStr delegate:selfbuttons:nil];
}
//注销例子
- (void) logoutDownjoy {
_demoVC =[[Downjoyalloc] initWithBaseInfo:app_idappKey :app_keydelegate :self];
[_demoVC downjoyLogout];
}
//支付例子
- (void) paymentDownjoy {
_demoVC =[[Downjoyalloc] initWithBaseInfo:app_idappKey :app_keydelegate :self];
//支付需要 appId appKey mid gid sid uif utp eif merchantKey九个参数
//其中 mid gid sid uif utp eif merchantKey 初始化在数据字典中
if (![_demoVCdownjoyIsLogin]) {
[SINGLETON myAlertView:nilmessage:@"请先登陆" delegate:self buttons:nil];
return;
}
NSString *paymentParameterString = [selfgetPaymentParameterString];
[self->windowViewspresentModalViewController:_demoVCanimated:YES];
[_demoVC downjoyPayment : paymentParameterString];
}
-(NSString *) getPaymentParameterString{
NSString *merchantKey = @"UZ/$JvBl";
NSString *mid=[[_demoVCdownjoyReadMemberInfo].memberId stringValue];
Payment *paymentParam=[[[Paymentalloc] initWithBaseInfo:@"12"gid:@"1" sid:@"1"uif:mid utp:@"0"eif:@"eif" merchantKey:merchantKey]autorelease];
NSDateFormatter *formatter=[[NSDateFormatteralloc] init];
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *dateString = [formatter stringFromDate:[NSDate date]];
[formatter release];
NSString *uif=[paymentParam.uifstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *eif=[paymentParam.eifstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *backUrl=[URL_PAY_BACKstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSMutableString *strParmEncode=[NSMutableStringstringWithFormat:@"mid=%@&gid=%@&sid=%@&uif=%@&utp=%@&eif=%@&bakurl=%@×tamp=%@", paymentParam.merchantId, paymentParam.gid, paymentParam.sid, uif, paymentParam.utp, eif, backUrl, dateString];
NSMutableString *strParm=[NSMutableStringstringWithFormat:@"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=[NSStringstringWithFormat:@"%@&merchantkey=%@", strParm, paymentParam.merchantKey];
NSString *strMd5=[[MD5Utilmd5:strCheck] lowercaseString];
NSString *strUrlFull = [NSStringstringWithFormat:@"%@&verstring=%@", strParmEncode, strMd5];
return strUrlFull;
}
//登陆
-(void)loginDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel
{
call_backs[Login_success] = [succopy];
call_backs[Login_fail] = [failcopy];
call_backs[Login_cancel] = [cancelcopy];
[selfloginDownjoy];
}
//注销
-(void)loginOutDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel
{
call_backs[LoginOut_success] = [succopy];
call_backs[LoginOut_fail] = [failcopy];
call_backs[LoginOut_cancel] = [cancelcopy];
[selflogoutDownjoy];
}
//个人中心
-(void)memberCenterDj
{
[selfmemberCenterDownjoy];
}
//判断是否登录当乐
-(BOOL)downjoyIsLoginDj
{
_demoVC =[[Downjoyalloc] initWithBaseInfo:app_idappKey :app_keydelegate :self];
//支付需要 appId appKey mid gid sid uif utp eif merchantKey九个参数
//其中 mid gid sid uif utp eif merchantKey 初始化在数据字典中
BOOL isLognin = [_demoVCdownjoyIsLogin];
[_demoVC release];
return isLognin;
}
//支付
-(void)PayForCoinDj:(charge_cb)suc Fail:(charge_cb)fail cb:(charge_cb)cancel
{
call_backs[LoginOut_success] = [succopy];
call_backs[LoginOut_fail] = [failcopy];
call_backs[LoginOut_cancel] = [cancelcopy];
[selfpaymentDownjoy];
}
-(NSNumber* )getDjMid
{
returnself.downjoyLoginResult.memberId;
}
-(NSString* )getDjUserName
{
returnself.downjoyLoginResult.username;
}
-(NSString* )getDjToken
{
returnself.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 delegatevoid 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);
}
}
- monotouch对接当乐
- MonoTouch 实例分析
- 简析MonoTouch工作原理
- uc sdk monotouch应用
- 全民消消乐电信SDK对接
- 全民消消乐 联通sdk对接
- MonoTouch: Drawing custom progress bars.
- monotouch包住framework与dylib
- monotouch 使用弱连接framework
- monotouch打包发布至Appstore
- monotouch中UIPageControl的使用
- net程序员的iPhone开发-MonoTouch
- .net程序员的iPhone开发-MonoTouch
- monotouch使用第三方framework库
- VS中使用MonoTouch开发iOS应用程序
- Monotouch BindingProject之友盟SDK
- monotouch拍照、选择图片上传实现
- Xamarin Mono For Android、Monotouch 安装、破解
- Win下Wing IDE 4.1支持中文显示的方法(修正方框乱码)
- linux cmds - ldconfig
- const用法(C/C++)
- 几个常用的FFmpeg小技巧
- 触屏中的JavaScript事件
- monotouch对接当乐
- 使用QT,在窗口中加入图片
- [学习]分布式缓存系统TAIR代码分析<二>
- 首次测试android程序连接网络错误:java.net.unknownhostexception:unable to resolve host
- (2)Managing the Activity Lifecycle
- flashback
- el表达式
- 3GPP协议目录及官方下载地址
- grep、sed、awk、perl等对正则表达式的支持的差别