# 接入

# 账号接入

  1. Cocoapods 引入 MachbirdKit,Podfile 中添加对应的 source 及 Pod 库,执行pod update

    source 'https://cdn.cocoapods.org/'
    source 'https://de5c5537444e6fe278ea3525c5d111e9ba90e4a3@github.com/machbirdx/spec.git'
    
    pod 'XALFrameworks/MachbirdKit/UI'
    pod 'XALFrameworks/Bridge'
    pod 'XALFrameworks/APSUnityBridgeSDK'
    
  2. 在项目跟目录放置 Configurations.plist 配置文件,配置文件统一有运营对接人员提供。

  3. 支持苹果 ID 登录(需要对应 bundleID 下支持 Sign In with Apple),需要在 XCode->TARGETS->Signing & Capabilities 中配置 Sign In with Apple

  4. 支持多语言,需要:

    1. 在 XCode->PROJECT->Info->Localizations 中添加对应语言,

    2. 主工程添加 InfoPlist.strings 文件,设置 English 为 Base,再添加简体中文,繁体中文。

    3. 分别在 InfoPlist.strings 文件的不同语言文件中添加CFBundleDevelopmentRegion = "en";"zh"、"zh-Hant"

  5. 配置 Info.plist

    1. 在 Info.plist 中设置 FacebookAppID,设置 FacebookDisplayName。

    2. TARGETS->Info->URL Types->添加一个 URL Type->URL Schemes 中添加 fb 后边带 FacebookAppID,如图所示

      img

  6. 引入头文件#import <MachbirdKit/MachbirdKit.h>

    具体提供的方法注释见头文件。

  7. 在 Info.plist 中配置MachbirdKitAppID。

  8. Info.plist 中增加 App Transport Security Settings->Allow Arbitrary Loads 为 YES。如果 有使用 http 的话。

  9. XCode->TARGETS->Build Settings->Enable Bitcode->NO。

  10. Info.plist 中配置 adjust_token。

  11. 苹果后台配置

# 支付接入

source 'https://cdn.cocoapods.org/'
source 'https://de5c5537444e6fe278ea3525c5d111e9ba90e4a3@github.com/machbirdx/spec.git'

pod 'XALFrameworks/VegaIAPSDK'

# 账号接口

# 初始化

描述:初始化 SDK,需要在didFinishedLaunching中调用。

调用示例:

[MachbirdKit initSDK];

# 快速登录页

描述:实现快速登录页面的显示。

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit startEasyLoginWithSuccess:^(APSAccountResultData * _Nonnull accountResultData, BOOL isRegister) {

} withFailure:^(NSError * _Nonnull error) {

}];

# Apple登录

描述:直接进行Apple登录

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit startAppleLoginWithSuccess:^(APSAccountResultData * _Nonnull accountResultData) {

} withFailure:^(NSError * _Nonnull error) {

}];

# Facebook登录

描述:直接进行Facebook登录

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit startFacebookLoginWithSuccess:^(APSAccountResultData * _Nonnull accountResultData) {

} withFailure:^(NSError * _Nonnull error) {

}];

# Email注册

描述:弹出Email注册弹框,注册成功自动为登录状态

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit startEmailRegisterWithSuccess:^(APSAccountResultData * _Nonnull accountResultData) {

} withFailure:^(NSError * _Nonnull error) {

}];

# 自动登录

描述:首页展示时调用此接口进行自动登录操作。如果未登录则内部自动游客登录。

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit autoLoginWithSuccess:^(APSAccountResultData * _Nonnull accountResultData) {

} withFailure:^(NSError * _Nonnull error) {

}];

# 游客登录

描述:进行游客登录

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit startGuestLoginWithSuccess:^(APSAccountResultData * _Nonnull accountResultData) {

} withFailure:^(NSError * _Nonnull error) {

}];

# 是否已登录

描述:是否已经登录

返回值:BOOL 类型,已经登录返回 YES,未登录返回 NO

调用示例:

BOOL isLogined = [MachbirdKit isLogined];

# 当前登录状态

描述:返回当前是苹果登录、facebook登录、还是邮箱登录、游客登录。

返回值:APSLoginStatus typedef NS_ENUM(NSInteger, APSLoginStatus) { APSLoginStatus_NotLogin = 0, APSLoginStatus_Anoymous, APSLoginStatus_Email, APSLoginStatus_Apple, APSLoginStatus_Facebook, };

调用示例:

APSLoginStatus loginStatus = [MachbirdKit loginStatus];

# 登出

描述:进行登出操作

参数:callback,登出完成的回调,登出成功 NSError 为 nil,登出失败 NSError 有内容。

调用示例:

[MachbirdKit logoutWithCallback:^(NSError * _Nonnull error) {

}];

# 展示账号信息

描述:进行游客登录

参数:

success:登录成功的回调,成功返回 APSAccountResultData 对象。

APSAccountResultData 的描述见 账号数据

failure:登录失败的回调,失败返回 NSError 对象

调用示例:

[MachbirdKit startAccountInfoWithSuccess:^(APSAccountResultData * _Nonnull accountResultData, BOOL isRegister) {

} withFailure:^(NSError * _Nonnull error) {

}];

# 获取账号数据

描述:获得当前登录的账号数据,使用前建议先判断 isLogined 为 YES

参数:

callback:获得账号成功的回调,

成功时 accountResultData 有内容,失败时 accountResultData 为 nil

APSAccountResultData 的描述见 账号数据

调用示例:

[MachbirdKit getAccountWithCallback:^(APSAccountResultData * _Nonnull accountResultData) {

}];

# 账号数据

supaNo:用户唯一 ID,nickname:昵称,upic:头像

调用示例:

[MachbirdKit getAccountWithCallback:^(APSAccountResultData * _Nonnull accountResultData) {
        NSString *supaNo = accountResultData.supaNo;
        NSString *nickname = accountResultData.nickname;
        NSString *upic = accountResultData.upic;
}];

# 支付接口

# 初始化

推荐在应用完成启动的事件中进行初始化, 例如在didFinishLaunchingWithOptions事件中进行初始化操作

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;
#import <VegaIAPSDK/VGIAPSDK.h>

//初始化iap sdk
    VegaIAPConfiguration *config = [[VegaIAPConfiguration alloc] init];
    config.appKey = @"6r2cqwox";
    config.privateKey = @"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIYho8b9vj3qEx9iDWieCB+3JadxHHxkFFIEta11XSoA+HpfWesrfrRHgn2fmMbBE5fBdbj8SBpYOysUztyibKsX/o4V4xHvaR66dJevfRUDA2NSIWbxFOOriCxOCmcQndpEuCblRdyo4Yxd+hwaAweWmfRV6UPCBoMxGeCOsem/AgMBAAECgYAwjHKELwmxzUyYmlvyFukn2ZmWbpl56Jt2SGAd5ZIQBwPo/yRDu52D0TJJGAArSG04C3z5tM7AQllAMariLyQXjxoo1cTKD119cf05bZYIgL4jonspAHcc26OKLjNgctD4qc0T10XWUNnaaCf6G903KHuCr85Yo150hnw7HX4zOQJBAMSViT8Fq5syHjWdJI2dsku3nPCB2V4PQ3uc4E/ijF05JNKmh1dXUwvcdLZvVaFNHr30zplL8GH6QU8cALSabi0CQQCuq+X8Q3v57stBLbTpkKq5NcbI5TM/jfAE60Q0JIX4PhxnqEC4YXTfz3704paDVlsYT7nVbOACrGRdQE3kM1cbAkBs5zJbGXcRyNf3d5CSa3QkghmNG0Ih227VAfk6CBUeZ9PAZsS/W/8DqSN3FYJok2KedQom3mzSumKHwsmZQ5wZAkBR2W891ImlxoYsFrTttcKqY06xGOX45BQS2gPtwyeb+c7pq+gX/mL79YlySzNoe/DX5ZQZNJmL5yhoohdd1cj9AkEAloKSNUH1OHVSJIaBV2llh6GC3IdjGoPjEhctQV4amVE1qoAejmyuyPjf4xDoLrinyqKJpFqWkCaD9cIOVUqbwA==";
    config.vegaIAPURL = @"http://test-iap.apuscn.com/iap";
    [VGIAPSDK initializeWithConfiguration:config completion:^{
        //
        NSLog(@"初始化完毕");
    }];

# 获取商品

获取一次性商品接口

[VGIAPSDK getProductsAndSubscriptionsWithFilter:@"" completionHandler:^(NSError * _Nullable error, NSArray * _Nullable products) {


    }];

# 发起应用内购买

//设置 supaNo 和 payload
[VGIAPSDK setUserId:self.supaNo payload:@"payload"];

    __weak __typeof(self)weakSelf = self;
    [VGIAPSDK purchase:@"ultimatepack099" quantity:1 completionHandler:^(NSUInteger resultCode, NSError * _Nullable error, NSDictionary * _Nullable order, NSUInteger serverTime) {
        NSLog(@"支付完毕");
        //resultCode = 200 即为成功
    }];

# 数据统计

以下为游戏的打点模型,所有参数为非必填,不需要的参数可以传 NULL

# 进入游戏的主界面

/**
 * 用户每次进入游戏的主界面时,主动调用。
 */
 void gameMainPageShow(void);

# Adjust 打点

/**
 * adjust打点
 * @param token 事件token
 */
void logByAdjust(char *token)

/**
 * adjust打点
 *
 * @param token             事件token
 * @param callbackParameterKey   回调参数key
 * @param callbackParameterValue 回调参数value
 */
 void logByAdjustAndParamValue(char *token, char *callbackParameterKey, char *callbackParameterValue)

/**
 * adjust打点
 * @param token 事件token
 * @param revenue 收入
 * @param currency 货币
 */
void logRevenueByAdjust(char *token, double revenue, char *currency)

/**
 * adjust打点
 *
 * @param token             事件token
 * @param revenue                收入
 * @param currency               货币
 * @param callbackParameterKey   回调参数key
 * @param callbackParameterValue 回调参数value
 */
void logRevenueByAdjustAndParamValue(char *token, double revenue, char *currency, char *callbackParameterKey, char *callbackParameterValue)

# 进入关卡、完成关卡和关卡失败

/**
 * 进入关卡、完成关卡和关卡失败时,记录游戏的进度,主动调用。
 * @param quest_index  关卡数或任务编号,必填。
 * @param quest_status  当前的任务/关卡/副本的状态。
 *        枚举值:
 *          a:表示任务开始。
 *          c:表示任务完成。
 *          f:表示任务失败。
 * @param quest_id  当前的任务/关卡/副本的编号。
 * @param quest_name 当前的任务/关卡/副本的名称。
 * @param quest_type 当前的任务/关卡/副本的类型。
 *        枚举值:
 *          main:表示主线任务。
 *          new:表示新手任务。
 *          sub:表示支线任务。
 * @param progress  任务/关卡/副本内的进度。 若使用到该字段,则传值必须为0到100的数值。若未使用该字段,则传值为-1。
 * @param times 次数。
 * @param app_id 用id,唯一标识一个应用。
 * @param account_id  账户id,唯一标识一个账户。
 * @param account_level  账户等级。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameQuest(char *app_id, 
 				long quest_index, 
				char *quest_status, 
 				char *quest_id, 
 				char *quest_name, 
 				char *quest_type, 
				long progress, 
 				long times, 
 				char *account_id, 
 				char *account_level, 
 				char *role_id, 
 				char *server_id);

# 进入任务、完成任务和任务失败

/**
 * 进入任务、完成任务和任务失败时,主动调用。
 * @param name 任务编号,必填。
 * @param type 当前任务的类型。
 *        枚举值:
 *          main:表示主线任务。
 *          new:表示新手任务。
 *          sub:表示支线任务。
 * @param status 当前任务的状态。
 *        枚举值:
 *          a:表示任务开始。
 *          c:表示任务完成。
 *          f:表示任务失败。
 * @param account_id 账户id,唯一标识一个账户。
 * @param role_id 角色Id
 * @param server_id  服务器Id
 */
 void gameTask(char *name,
 			   char *type,
 			   char *status,
 			   char *account_id,
 			   char *role_id,
 			   char *server_id);

# 卡牌的获取、使用、卸下、升级

/**
 * 卡牌的获取、使用、卸下、升级时,主动调用。
 * @param card_name 卡牌名称,必填。
 * @param action 卡牌的动作。
 *        枚举值:
 *          acquire:表示获取卡牌。
 *          wield:表示使用卡牌。
 *          unwield:表示卸下卡牌。
 *          upgrade:表示升级卡牌。
 * @param card_type 卡牌的类型。
 * @param card_level 卡牌的等级。
 * @param account_id  账户id,唯一标识一个账户。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameCard(char *card_name,
 			   char *action,
 			   char *card_type,
 			   char *card_level,
 			   char *account_id,
 			   char *role_id,
 			   char *server_id);

# 装备的获取、使用、卸下、升级

/**
 * 装备的获取、使用、卸下、升级时,主动调用。
 * @param name    字符串    AA_equip_name    装备名称,必填。
 * @param action 装备的动作。
 *          枚举值:
 *              acquire:表示获取装备。
 *              wield:表示使用装备。
 *              unwield:表示卸下装备。
 *              upgrade:表示升级装备。
 * @param account_id 账户id,唯一标识一个账户。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameEquip(char *name,
 			    char *action,
 			    char *account_id,
 			    char *role_id,
 			    char *server_id);

# 道具或控件被点击

/**
 * 游戏核心的道具或控件被点击时,主动调用。
 * @param name 控件或按钮的名称
 * @param account_id 账户id,唯一标识一个账户。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameCoreClick(char *name,
 			   		char *account_id,
 			   		char *role_id,
 			   		char *server_id);

# 非用户操作

/**
 * 记录游戏核心的非用户操作,主动调用。
 * @param name 操作名称
 * @param status 操作状态
 *          枚举值:
 *              a:表示任务开始。
 *              c:表示任务完成。
 *              f:表示任务失败。
 * @param account_id 账户id,唯一标识一个账户。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameCoreOperation(char *name,
 			   			char *status,
 			   			char *account_id,
 			   			char *role_id,
 			   			char *server_id);

# 页面或控件被展示

/**
 * 游戏核心的页面或重点关注的控件被展示时,主动调用。
 * @param name 页面或控件名称
 * @param account_id 账户id,唯一标识一个账户。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameCoreShow(char *name,
 			   	   char *account_id,
 			   	   char *role_id,
 			   	   char *server_id);

# 成功购买或出售游戏物品

/**
 * 当用虚拟货币成功购买或出售某游戏物品时,主动调用。
 * @param item_name 游戏内交易的虚拟物品的名称。
 * @param item_num 交易的数量。
 * @param item_total_price  交易的总价。
 * @param deal_type 交易类型,默认是购买。
 *          枚举值:
 *              buy:购买。
 *              sell:出售。
 * @param app_id 应用id,唯一标识一个应用。
 * @param account_id 账户id,唯一标识一个账户。
 * @param account_level    字符串    AA_account_level    账户等级。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gameEconomy(char *app_id,
 			   	  char *item_name,
 			   	  long item_num,
 			   	  double item_total_price,
 			   	  char *deal_type,
 			   	  char *account_id,
 			   	  char *account_level,
 			   	  char *role_id,
 			   	  char *server_id);

# 充值成功

/**
 * 用户使用真实货币充值成功后,主动调用。
 * @param transaction_id 交易的流水号。
 * @param payment_type 支付类型。
 * @param currency_type 货币类型。
 * @param virtual_coin_num 充值获得的游戏货币的数量。
 * @param iap_name 游戏内购买道具的名称。
 * @param iap_num  游戏内购买道具的数量。
 * @param real_coin_num  支付的真实货币的金额。
 * @param app_id 应用id,唯一标识一个应用。
 * @param account_id 账户id,唯一标识一个账户。
 * @param account_level 账户等级。
 * @param role_id 角色Id
 * @param server_id 服务器Id
 */
 void gamePayment(char *app_id,
 			   	  char *transaction_id,
 			   	  char *payment_type,
 			   	  char *currency_type,
 			   	  long virtual_coin_num,
 			   	  char *iap_name,
 			   	  long iap_num,
 			   	  double real_coin_num,
 			   	  char *account_id,
 			   	  char *account_level,
 			   	  char *role_id,
 			   	  char *server_id);

# 广告打开前后

/**
 * 记录广告打开前后的事件,主动调用。
 * @param trigger 广告的触发场景。
 * @param status 状态。
 *          枚举值:
 *          ready:记录广告准备。
 *          open:记录广告打开。
 *          close:记录广告关闭。
 *          content_show:记录广告内容的展示。
 *          content_click:记录广告内容的点击。
 *          rewarded:激励视频播放完成。
 * @param is_ready 是否有缓存。
 *          枚举值:
 *              0:表示无缓存。
 *              1:表示有缓存。
 * @param ad_type 广告类型。
 *          枚举值:
 *              reward:表示激励视频广告。
 *              interstitial:表示插屏广告。
 *              banner:表示横幅广告。
 *              native:表示原生广告。
 * @param app_id 应用id,唯一标识一个应用。
 * @param account_id 账户id,唯一标识一个账户。
 */
 void gameAdvOperation(char *app_id,
 			   	  	   char *trigger,
 			   	  	   char *status,
 			   	  	   long is_ready,
 			   	  	   char *ad_type,
 			   	  	   char *account_id);

# 用户注册成功

/**
 * 当用户注册成功后,主动调用。
 * @param gender 注册时获取到的用户性别。
 *          枚举值:
 *              O:表示未填写。
 *              M:表示性别男。
 *              F:表示性别女。
 * @param age  注册时获取到的用户年龄。
 * @param account_type 账户类型,例如自有系统账户,三方系统账户,游客等。
 * @param app_id 应用id,唯一标识一个应用。
 * @param account_id 账户id,唯一标识一个账户。
 */
 void gameRegister(char *app_id,
 			   	   char *gender,
 			   	   long age,
 			   	   char *account_type,
 			   	   char *account_id);

# 用户登录成功

/**
 * 当用户登录成功后,主动调用。
 * @param account_level  账户等级。
 * @param app_id 应用id,唯一标识一个应用。
 * @param account_id 账户id,唯一标识一个账户。
 * @param server_id 服务器id,标识所在的服务器。
 * @param role_id 角色id,标识一个角色。
 */
 void gameLogin(char *app_id,
				char *account_level,
				char *account_id,
				char *server_id,
				char *role_id);

# GDPR 页面展示、同意或不同意

/**
 * 当GDPR页面展示、同意或不同意后,主动调用。
 * @param action 表示GDPR页面的相关动作。
 *          枚举值:
 *              page_show:表示GDPR页展示。
 *              agree:表示GDPR页面点击了同意。
 *              disagree:表示GDPR页面点击了不同意。
 */
 void gameGdpr(char *action);

# 游戏 BI 的打点分析功能

/**
 * 记录自定义事件,用于游戏BI的打点分析功能,主动调用。
 * @param name  自定义事件的名称。
 * @param custom_params 自定义的参数Key和Value,传Json字符串。
 * @param app_id  应用id,唯一标识一个应用。
 * @param account_id 账户id,唯一标识一个账户。
 */
 void gameEvent(char *app_id,
				char *name,
				char *custom_params,
				char *account_id);
最后更新: 11/24/2020, 2:31:02 PM