头文件 .h:
#import <Foundation/Foundation.h>
typedef enum _XLBadgeManagedType {
XLInboxManagedMethod = 0,
XLDeveloperManagedMethod = 1
} XLBadgeManagedType ;
@interface XLXtifyOptions :NSObject
{
NSString *xoAppKey;
BOOL xoLocationRequired ;
BOOL xoBackgroundLocationRequired ;
BOOL xoLogging ;
BOOL xoMultipleMarkets;
XLBadgeManagedType xoManageBadge;
}
+ (XLXtifyOptions *)getXtifyOptions;
- (NSString *)getAppKey ;
- (BOOL) isLocationRequired;
- (BOOL) isBackgroundLocationRequired ;
- (BOOL) isLogging ;
- (BOOL) isMultipleMarkets;
- (XLBadgeManagedType) getManageBadgeType;
- (void)xtLogMessage:(NSString *)header content:(NSString *)message, ...;
@end
.m文件:
#import "XLXtifyOptions.h"
#import "XtifyGlobal.h"
static XLXtifyOptions *xXtifyOptions=nil;
@implementation XLXtifyOptions
+ (XLXtifyOptions *)getXtifyOptions
{
if (xXtifyOptions==nil) {
xXtifyOptions=[[XLXtifyOptions alloc]init];
}
return xXtifyOptions;
}
-(id)init
{
if (self = [super init]) {
xoAppKey=xAppKey;
xoLocationRequired=xLocationRequired;
xoBackgroundLocationRequired=xRunAlsoInBackground ;
xoLogging =xLogging ;
xoMultipleMarkets=xMultipleMarkets;
xoManageBadge=xBadgeManagerMethod;
}
return self;
}
- (NSString *)getAppKey
{
return xoAppKey;
}
- (BOOL) isLocationRequired
{
return xoLocationRequired;
}
- (BOOL) isBackgroundLocationRequired
{
return xoBackgroundLocationRequired;
}
- (BOOL) isLogging
{
return xoLogging;
}
- (BOOL) isMultipleMarkets
{
return xoMultipleMarkets;
}
- (XLBadgeManagedType) getManageBadgeType
{
return xoManageBadge;
}
- (void)xtLogMessage:(NSString *)header content:(NSString *)format, ... {
va_list args;
va_start(args, format);
if (xoLogging) {
NSString *prettyFmt=[NSString stringWithFormat:@"%@ %@", header,format];
NSLogv(prettyFmt, args);
}
va_end(args);
}
@end
Global.h:
#define xAppKey @"abc123"
#define xLocationRequired NO
#define xRunAlsoInBackground FALSE
#define xBadgeManagerMethod XLInboxManagedMethod
#define xLogging TRUE
#define xMultipleMarkets FALSE
我的绑定定义:
[BaseType (typeof (NSObject))]
public interface XLXtifyOptions {
[Static]
[Export ("xtifyOptions")]
XLXtifyOptions Options { get;}
[Export ("getAppKey")]
string GetAppKey ();
[Export ("isLocationRequired")]
bool IsLocationRequired ();
[Export ("isBackgroundLocationRequired")]
bool IsBackgroundLocationRequired ();
[Export ("isLogging")]
bool IsLogging ();
[Export ("isMultipleMarkets")]
bool IsMultipleMarkets ();
[Export ("getManageBadgeType")]
XLBadgeManagedType GetManageBadgeType ();
// [Export ("xtLogMessage:content:...")]
// void XtLogMessagecontent... (string header, string message,, );
//
}
以下返回 null:
XLXtifyOptions.Options;
new XLXtifyOptions().GetAppKey();
厂商的入门指南:
要开始使用,请按照以下步骤操作:
XLXtifyOptions *anXtifyOptions=[Options getVendorOptions];
[[TheirClass get ]initilizeXoptions:anVendorOptions];
我匆忙地尝试重命名一些东西,因为我不确定可以粘贴供应商代码的程度,所以希望没有混淆问题。
这与以下相关:Binding #define used as constant 更多信息:
如果我在设备上运行而不是模拟器上运行这个程序,我会得到以下错误:
Unhandled managed exception: Wrapper type 'XtifyPush.XLXtifyOptions' is missing its native ObjectiveC class 'XLXtifyOptions'.
编辑
关于@Stephane的问题:我更新了代码,不再隐藏供应商。我绑定的是:http://developer.xtify.com/display/sdk/Getting+Started+with+Apple+Push+Notification+Service,顺便说一下。我已经按照您的建议更新了getXtifyOptions的引用,但结果仍然相同。我已经尝试使用您提到的github库,但我会继续探索。
我正在处理的绑定可以在此处找到:https://github.com/lordscarlet/monotouch-bindings/tree/master/Xtify
[Export]
部分是否会与我创建的类有所关联? - Doug Moore