更换游戏sdk

This commit is contained in:
liyuhua
2023-09-13 10:18:45 +08:00
parent be7ee4235f
commit 884482b8ae
64 changed files with 292 additions and 1518 deletions

View File

@@ -0,0 +1,27 @@
//
// Created by guanghui on 2022/7/5.
//
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSUInteger, GameCheckoutStatus) {
/** 等待执行 */
GAME_CHECKOUT_WAITING,
/** 开始执行 */
GAME_CHECKOUT_STARTED,
/** 下载中 */
GAME_CHECKOUT_CHECKOUTING,
/** 已暂停 */
GAME_CHECKOUT_PAUSE,
/** 已完成 */
GAME_CHECKOUT_COMPLETED,
/** 已取消 */
GAME_CHECKOUT_CANCELED,
};

View File

@@ -0,0 +1,10 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface ISudAPPD : NSObject
+ (void)e:(int)v;
+ (void)d;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,54 @@
//
// Created by guanghui on 2022/2/28.
//
#import <Foundation/Foundation.h>
@protocol ISudCfg <NSObject>
/// 获取加载游戏时,是否显示游戏背景图
/// @return true:显示 false:隐藏 默认:显示true
/// 最低版本v1.1.46.xx
-(BOOL) getShowLoadingGameBg;
/// 设置加载游戏时,是否显示游戏背景图
/// @param show true:显示 false:隐藏
/// 最低版本v1.1.46.xx
-(void) setShowLoadingGameBg:(BOOL) show;
/// 获取加载游戏时是否要显示自定义的Loading效果
/// @return true:显示 false:SDK默认Loading效果 默认:显示SDK默认Loading效果
/// 最低版本v1.1.52.xx
- (BOOL)getShowCustomLoading;
/// 设置加载游戏时是否要显示自定义的Loading效果
/// @param show true:自定义 false:SDK默认Loading效果
/// 最低版本v1.1.52.xx
- (void)setShowCustomLoading:(BOOL) show;
/// 添加游戏嵌入包路径
/// @param mgId 游戏id
/// @param mgPath 游戏路径app assets路径下
/// 最低版本v1.1.52.xx
- (void)addEmbeddedMGPkg:(int64_t) mgId mgPath:(NSString*) mgPath;
/// 移除游戏嵌入包
/// @param mgId
/// 最低版本v1.1.52.xx
- (void)removeEmbeddedMGPkg:(int64_t) mgId;
/// 获取游戏嵌入包路径
/// @param mgId 游戏ID
/// @return mgPath
/// 最低版本v1.1.52.xx
- (NSString *)getEmbeddedMGPkgPath:(int64_t) mgId;
/// 设置加载游戏时是否使用后台模式默认为true
/// @param mode true: 使用后台模式 false使用默认模式
/// 最低版本v1.2.7.xx
- (void) setBackgroundMode:(BOOL) mode;
/// 获取加载游戏时是否使用后台模式默认为true
/// @return true: 使用后台模式 false使用默认模式
/// 最低版本v1.2.7.xx
- (BOOL) getBackgroundMode;
@end

View File

@@ -0,0 +1,63 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol ISudFSMStateHandle;
@protocol ISudFSMMG <NSObject>
/// 游戏日志
/// 最低版本v1.1.30.xx
-(void) onGameLog:(NSString*)dataJson;
/// 游戏加载进度(loadMG)
/// @param stage start=1,loading=2,end=3
/// @param retCode 错误码0成功
/// @param progress [0, 100]
/// 最低版本v1.1.30.xx
-(void) onGameLoadingProgress:(int)stage retCode:(int)retCode progress:(int)progress;
/// 游戏开始(游戏长连接建立完成)
/// 最低版本v1.1.30.xx
-(void) onGameStarted;
/// 游戏销毁
/// 最低版本v1.1.30.xx
-(void) onGameDestroyed;
/// 短期令牌code过期
/// APP接入方需要调用handle.success或handle.fail
/// @param dataJson {"code":"value"}
-(void) onExpireCode:(id<ISudFSMStateHandle>)handle dataJson:(NSString*)dataJson;
/// 获取游戏View信息
/// APP接入方需要调用handle.success或handle.fail
/// @param handle ISudFSMStateHandle
/// @param dataJson {}
-(void) onGetGameViewInfo:(id<ISudFSMStateHandle>) handle dataJson:(NSString*)dataJson;
/// 获取游戏Config
/// APP接入方需要调用handle.success或handle.fail
/// @param handle ISudFSMStateHandle
/// @param dataJson dataJson
/// 最低版本v1.1.30.xx
-(void) onGetGameCfg:(id<ISudFSMStateHandle>) handle dataJson:(NSString*)dataJson;
/// 游戏状态变化
/// APP接入方需要调用handle.success或handle.fail
/// @param handle ISudFSMStateHandle
/// @param state state
/// @param dataJson dataJson
-(void) onGameStateChange:(id<ISudFSMStateHandle>) handle state:(NSString*) state dataJson:(NSString*) dataJson;
/// 游戏玩家状态变化
/// APP接入方需要调用handle.success或handle.fail
/// @param handle ISudFSMStateHandle
/// @param userId userId
/// @param state state
/// @param dataJson dataJson
-(void) onPlayerStateChange:(nullable id<ISudFSMStateHandle>) handle userId:(NSString*) userId state:(NSString*) state dataJson:(NSString*) dataJson;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,11 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// APP接入方需要调用handle.success或handle.fail
@protocol ISudFSMStateHandle <NSObject>
-(void) success:(NSString*) dataJson;
-(void) failure:(NSString*) dataJson;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,56 @@
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "ISudListenerNotifyStateChange.h"
NS_ASSUME_NONNULL_BEGIN
@protocol ISudFSMMG;
@protocol ISudFSTAPP <NSObject>
/// 获取游戏View
/// @return UIView
- (UIView *)getGameView;
/// 销毁游戏
/// @return boolean
- (bool)destroyMG;
/// 重新加载游戏
- (void)reloadMG;
/// 更新短期令牌code
/// @param code 短期令牌code
/// @param listener 回调只表示APP状态通知到了小游戏不表示小游戏执行了别的逻辑代码比如游戏业务逻辑网络请求一般传null。
- (void)updateCode:(NSString *) code listener:(ISudListenerNotifyStateChange) listener;
/// 获取游戏状态
/// @param state state
/// @return json
- (NSString*)getGameState:(NSString*) state;
/// 获取玩家状态
/// @param userId userId
/// @param state state
/// @return json
- (NSString*)getPlayerState:(NSString*) userId state:(NSString*) state;
/// APP状态通知给小游戏
/// @param state state
/// @param dataJson example: {"key": "value"}
/// @param listener 回调只表示APP状态通知到了小游戏不表示小游戏执行了别的逻辑代码比如游戏业务逻辑网络请求一般传null。
- (void)notifyStateChange:(const NSString *)state dataJson:(NSString *)dataJson listener:(ISudListenerNotifyStateChange) listener;
/// 继续游戏
- (void) playMG;
/// 暂停游戏
- (void) pauseMG;
/// 传入的音频数据必须是PCM格式采样率16000 采样位数16 声道数: MONO
/// @param data pcm数据
- (void)pushAudio:(NSData *)data;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,9 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class GameInfo;
typedef void (^ISudListenerGetFQSInfo)(int retCode, const NSString* retMsg);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,9 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class GameInfo;
typedef void (^ISudListenerGetMGInfo)(int retCode, const NSString* retMsg, GameInfo* _Nullable gameInfo);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^ISudListenerGetMGList)(int retCode, const NSString* retMsg, const NSString* _Nullable dataJson);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^ISudListenerInitSDK)(int retCode, const NSString* retMsg);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^ISudListenerNotifyStateChange)(int retCode, const NSString* retMsg, const NSString* dataJson);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,17 @@
#import <Foundation/Foundation.h>
#import "GameCheckoutStatus.h"
NS_ASSUME_NONNULL_BEGIN
@protocol ISudListenerPrepareGame <NSObject>
-(void) onPrepareSuccess:(int64_t) mgId;
-(void) onPrepareFailure:(int64_t) mgId errCode:(int) errCode errMsg:(NSString *) errMsg;
-(void) onPrepareStatus:(int64_t) mgId checkoutedSize:(long) checkoutedSize totalSize:(long) totalSize status:(GameCheckoutStatus) status;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^ISudListenerReportStatsEvent)(const NSString* event, int retCode, const NSString* stats);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,7 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^ISudListenerUninitSDK)(int retCode, const NSString* retMsg);
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,41 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/**
* Priority constant for the println method; use Log.v.
*/
#define SudLogVERBOSE 2
/**
* Priority constant for the println method; use Log.d.
*/
#define SudLogDEBUG 3
/**
* Priority constant for the println method; use Log.i.
*/
#define SudLogINFO 4
/**
* Priority constant for the println method; use Log.w.
*/
#define SudLogWARN 5
/**
* Priority constant for the println method; use Log.e.
*/
#define SudLogERROR 6
/**
* Priority constant for the println method.
*/
#define SudLogASSERT 7
@protocol ISudLogger <NSObject>
- (void) setLogLevel:(int) level;
- (void) log:(int) level tag:(NSString*) tag msg:(NSString*) msg detailLine:(NSString *)detailLine;
- (void) log:(int) level tag:(NSString*) tag msg:(NSString*) msg error:(NSError *) error detailLine:(NSString *)detailLine;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,21 @@
//
// Created by guanghui on 2022/7/5.
//
#import <Foundation/Foundation.h>
@interface SudInitSDKParamModel : NSObject
/// appId Sud互动小游戏平台生成
@property (nonatomic, copy) NSString *appId;
/// appKey Sud互动小游戏平台生成
@property (nonatomic, copy) NSString *appKey;
/// isTestEnv true:测试环境 false:生产环境
@property (nonatomic, assign) BOOL isTestEnv;
- (instancetype)init;
- (BOOL)check;
@end

View File

@@ -0,0 +1,15 @@
//
// Created by guanghui on 2022/7/5.
//
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, SudLoadMGMode)
{
/// unspecified
kSudLoadMGModeUnspecified = -1,
/// normal, 正常模式
kSudLoadMGModeNormal = 0,
/// AuthCrossApp跨域App
kSudLoadMgModeAppCrossAuth = 1,
};

View File

@@ -0,0 +1,36 @@
//
// Created by guanghui on 2022/7/5.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface SudLoadMGParamModel : NSObject
/// loadMG模式
@property (nonatomic, assign) int loadMGMode;
/// game view container
@property (nonatomic, strong) UIView *gameViewContainer;
/// 用户ID业务系统保证每个用户拥有唯一ID
@property (nonatomic, copy) NSString *userId;
/// 房间ID业务系统保证唯一性进入同一房间内
@property (nonatomic, copy) NSString *roomId;
/// code 短期令牌Code
@property (nonatomic, copy) NSString *code;
/// 小游戏ID测试环境和生产环境小游戏ID是一致的
@property (nonatomic, assign) long mgId;
/// language 游戏语言 现支持简体zh-CN 繁体zh-TW 英语en-US 马来语ms-MY 等
@property (nonatomic, copy) NSString *language;
/// 当loadMgMode为kLoadMgModeCrossApp时该字段有效
@property (nonatomic, copy) NSString *authorizationSecret;
- (instancetype)init;
- (BOOL) check;
@end

View File

@@ -0,0 +1,35 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "ISudListenerGetFQSInfo.h"
#import "ISudListenerGetMGInfo.h"
#import "GameCheckoutStatus.h"
#import "ISudAPPD.h"
#import "ISudCfg.h"
#import "ISudFSMMG.h"
#import "ISudFSMStateHandle.h"
#import "ISudFSTAPP.h"
#import "ISudListenerGetMGList.h"
#import "ISudListenerInitSDK.h"
#import "ISudListenerNotifyStateChange.h"
#import "ISudListenerPrepareGame.h"
#import "ISudListenerReportStatsEvent.h"
#import "ISudListenerUninitSDK.h"
#import "ISudLogger.h"
#import "SudInitSDKParamModel.h"
#import "SudLoadMGMode.h"
#import "SudLoadMGParamModel.h"
#import "SudMGP.h"
FOUNDATION_EXPORT double SudMGPVersionNumber;
FOUNDATION_EXPORT const unsigned char SudMGPVersionString[];

View File

@@ -0,0 +1,139 @@
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "ISudListenerInitSDK.h"
#import "ISudListenerGetMGList.h"
#import "ISudListenerUninitSDK.h"
#import "ISudListenerReportStatsEvent.h"
NS_ASSUME_NONNULL_BEGIN
@protocol ISudFSTAPP;
@protocol ISudFSMMG;
@protocol ISudCfg;
@protocol ISudListenerPrepareGame;
@class SudInitSDKParamModel;
@class SudLoadMGParamModel;
@interface SudMGP : NSObject
/**
* 获取SDK版本
* @return 示例:"1.1.35.286"
*/
+ (NSString*_Nonnull)getVersion;
/**
* 获取SDK版本别名
* @return 示例:"v1.1.35.286-et"
*/
+ (NSString*_Nonnull)getVersionAlias;
+ (id<ISudCfg>_Nonnull)getCfg;
/**
* 初始化SDK
* @param appId 小游戏平台生成
* @param appKey 小游戏平台生成
* @param isTestEnv true:测试环境 false:生产环境
* @param listener ISudListenerInitSDK
*/
+ (void)initSDK:(NSString*_Nonnull)appId
appKey:(NSString*_Nonnull)appKey
isTestEnv:(BOOL)isTestEnv
listener:(ISudListenerInitSDK _Nullable )listener;
/**
* 初始化SDK
* @param model SudInitSDKParamModel
* @param listener ISudListenerInitSDK
* 最低版本v1.1.54.xx
*/
+ (void)initSDK:(SudInitSDKParamModel*)model
listener:(ISudListenerInitSDK _Nullable )listener;
/**
* 反初始化SDK
* @param listener ISudListenerUninitSDK
*/
+ (void)uninitSDK:(ISudListenerUninitSDK _Nullable )listener;
/**
* 获取游戏列表
* @param listener ISudListenerGetMGList
*/
+ (void)getMGList:(ISudListenerGetMGList _Nullable )listener;
/**
* 加载游戏
* @param userId 用户ID业务系统保证每个用户拥有唯一ID
* @param roomId 房间ID业务系统保证唯一性进入同一房间内
* @param code 短期令牌Code
* @param mgId 小游戏ID测试环境和生成环境小游戏ID是一致的
* @param language 游戏语言 现支持简体zh-CN 繁体zh-TW 英语en-US 马来语ms-MY
* @param fsmMG ISudFSMMG
* @param rootView 用于显示游戏的根视图gameViewContainer
* @return ISudFSTAPP
*/
+ (id<ISudFSTAPP>_Nonnull)loadMG:(NSString*_Nonnull)userId
roomId:(NSString*_Nonnull)roomId
code:(NSString*_Nonnull)code
mgId:(int64_t)mgId
language:(NSString*_Nonnull)language
fsmMG:(id<ISudFSMMG>_Nonnull)fsmMG
rootView:(UIView*_Nonnull)rootView;
/**
* 加载游戏
* @param model SudLoadMGParamModel
* @param fsmMG ISudFSMMG
* @return ISudFSTAPP
* 最低版本v1.1.54.xx
*/
+ (id<ISudFSTAPP>_Nonnull)loadMG:(SudLoadMGParamModel*_Nonnull)model
fsmMG:(id<ISudFSMMG>_Nonnull)fsmMG;
/**
* 销毁游戏
* @param fstAPP 加载游戏返回的对象ISudFSTAPP
* @return boolean
*/
+ (bool)destroyMG:(id<ISudFSTAPP>_Nonnull) fstAPP;
/**
* 预加载游戏包列表
* @param mgIdList 游戏ID列表
*/
+ (void) prepareGameList:(NSArray<NSNumber *> *) mgIdList listener:(id<ISudListenerPrepareGame>) listener;
/**
* 取消预加载游戏包
* @param mgIdList 游戏ID列表
*/
+ (void) cancelPrepareGameList:(NSArray<NSNumber *> *) mgIdList;
/**
* 设置统计上报userId
* @param userId 用户ID
*/
+ (void)setUserId:(NSString*)userId;
/**
* 设置统计上报回调
* @param listener 回调
* @return 返回值
*/
+ (bool)setReportStatsEventListener:(ISudListenerReportStatsEvent)listener;
/**
* 设置日志等级
* @param logLevel 输出log的等级,SudLogVERBOSE,SudLogDEBUG,SudLogINFO 见ISudLogger.h
*/
+ (void)setLogLevel:(int)logLevel;
/// 设置是否由SDK设置AudioSession
/// @param autoSet 是否由SDK自动设置
+ (void)autoSetAudioSession:(BOOL)autoSet;
@end
NS_ASSUME_NONNULL_END

Binary file not shown.

View File

@@ -0,0 +1,6 @@
framework module SudMGP {
umbrella header "SudMGP-umbrella.h"
export *
module * { export * }
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB