//
//  WACoreProxy.h
//  WASdkIntfUI
//
//  Created by wuyx on 16/3/1.
//  Copyright 漏 2016骞� GHW-T-01. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <WASdkIntf/WACore.h>
#import <WASdkIntf/WAIPush.h>
NS_ASSUME_NONNULL_BEGIN

@class WACoreProxy;

#define WALog(fmt,...) {\
if([WACoreProxy displayLog]){\
NSLog((@"WASDK LOG [(version %@) %s ]:" fmt), [WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__);\
[WACoreProxy addLogWithString:[NSString stringWithFormat:(@"(version %@) %s ]:" fmt),[WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__]];\
}\
}

#define WALogNb(fmt,...) {\
if([WACoreProxy displayLog]){\
NSLog((@"WASDK LOG [(version %@) %s ]:" fmt), [WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__);\
[WACoreProxy addLogWithString:[NSString stringWithFormat:(@"(version %@) %s ]:" fmt),[WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__]];\
}\
}

#define WALogImpt(fmt,...) {\
NSLog((@"WASDK LOG [(version %@) %s ]:" fmt), [WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__);\
if([WACoreProxy displayLog]){\
[WACoreProxy addLogWithString:[NSString stringWithFormat:(@"(version %@) %s ]:" fmt),[WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__]];\
}\
}

#define WAEventLog(fmt,...) {\
if([WACoreProxy displayLog]){\
NSLog((@"WASDK LOG [(version %@) %s ]:" fmt), [WACoreProxy getSdkVer],__FUNCTION__, ##__VA_ARGS__);\
[WACoreProxy addEventContentWithString:[NSString stringWithFormat:(@"" fmt),##__VA_ARGS__]];\
}\
}
/*!
 @discussion WACoreProxy
 - - -
 */
@interface WACoreProxy : NSObject
/*!
 @abstract 鍒濆鍖�
 */
+(void)init;


/*!
 @abstract 鍒濆鍖�(20221202鏂板鍒濆鍖栧洖璋�)
 */

+(void)initWithCompletionHandler:(void (^_Nullable)(void))completionHandler;


/*!
 @abstract 璁剧疆sdk绫诲瀷 0 鍥藉锛�1 鍥藉唴
 */
+ (void)setSDKType:(NSInteger)sdkType;
/*!
 @abstract 鑾峰彇sdk绫诲瀷 0 鍥藉锛�1 鍥藉唴
 */
+ (NSInteger)getSDKType;
/*!
 @abstract 寮€鍚暟鎹敹闆�
 */
+(void)initAppEventTracker;
/*!
 @abstract 鏄惁璋冭瘯妯″紡
 */
+(BOOL)isDebugMode;
/*!
 @abstract 璁剧疆璋冭瘯妯″紡
 */
+(void)setDebugMode:(BOOL)isDebugMode;

/*!
 @abstract 鏄惁鏄剧ずLog鎸夐挳
 */
+(BOOL)displayLog;
/*!
 @abstract 璁剧疆clientId
 */
+(void)setClientId:(NSString*)clientId;
/*!
 @abstract 鑾峰彇userId
 */
+(NSString*)getUserId;
/*!
 @abstract 璁剧疆serverId
 @param serverId 鏈嶅姟鍣╥d
 */
+(void)setServerId:(NSString *)serverId;
/*!
 @abstract 鑾峰彇serverId
 */

+(NSString*)getServerId;
/*!
 @abstract 璁剧疆level
 @param level 绛夌骇
 */
+(void)setLevel:(int)level;
/*!
 @abstract 鑾峰彇level
 */
+(int)getLevel;
/*!
 @abstract 璁剧疆gameUserId
 @param gameUserId 娓告垙userId
 */
+(void)setGameUserId:(NSString*)gameUserId;
/*!
 @abstract 鑾峰彇gameUserId
 */
+(NSString*)getGameUserId;
/*!
 @abstract 璁剧疆nickName
 @param nickName 娓告垙瑙掕壊鍚�
 */
+(void)setNickName:(NSString*)nickName;
/*!
 @abstract 鑾峰彇nickName
 */
+(NSString*)getNickName;
/*!
 @abstract 鑾峰彇userFlag
 */
+(void)setUserFlag:(NSString*)userFlag;
/*!
 @abstract 鑾峰彇userFlag
 */
+(NSString*)getUserFlag;
/*!
 @abstract 鑾峰彇WA Server url
 */
+(NSString*)getWaSdkServerUrl;
/*!
 @abstract 鑾峰彇appKey
 */
+(NSString*)getAppKey;
/*!
 @abstract 鑾峰彇Publish Channel
 */
+(NSString*)getPublishChannel;
/*!
 @abstract 鑾峰彇Channel
 */
+(NSString*)getChannel;
/*!
 @abstract 鑾峰彇appId
 */
+(NSString*)getAppID;
/*!
 @abstract 鑾峰彇os
 */
+(NSString*)getOS;
/*!
 @abstract 鑾峰彇SDK鐗堟湰
 */
+(NSString*)getSdkVer;
/*!
 @abstract 鑾峰彇SDK ID
 */
+(NSString *)getSdkId;
/*!
 @abstract 鑾峰彇閰嶇疆鏂囦欢鐗堟湰
 */
+(NSString*)getXmlConfigVer;
/*!
 @abstract 鑾峰彇鎶借薄灞傜増鏈�
 */
+(NSString*)getIntfVer;
/*!
 @abstract 鑾峰彇SessionId
 */
+(NSString*)getSessionId;
/*!
 @abstract 闅愮鏀跨瓥URL鍦板潃
 */
+(NSString *)getPrivacyUrl;
/*!
 @abstract 闅愮鏀跨瓥鏇存柊鏃堕棿
 */
+(NSString *)getPrivacyUpdateTime;
/*!
 @abstract 闅愮鏀跨瓥鍐呭鐣岄潰
 */
+(void)showPrivacyUI:(void(^)(void))privacyUIClosedHandler;
+(void)showPrivacyUITitle:(NSString*)title url:(NSString*)url handle:(void(^)(void))privacyUIClosedHandler;

/*!
 @abstract 涓嬮潰涓や釜鏂规硶鏄叧浜嶧acebook deeplink, CP涓嶇敤鍏虫敞
 */
-(NSString*)getDeepLinkWithUrl:(NSURL*)url;

+(void)fetchDeferredAppLink:(void(^)(NSURL *url, NSError *error))handler;
/*!
 @abstract 鑾峰彇鍚庡彴閰嶇疆鍙傛暟
 */
+(WAParamConfigObj*)getParamConfig;
/*!
 @abstract 涓嬮潰鍥涗釜鏂规硶鏄叧浜庢墦鍗版棩蹇楃殑,CP涓嶇敤鍏虫敞
 */
+(void)addLogWithString:(NSString*)string;

+(void)addLogWithoutBtn:(NSString*)string;

+(void)addEventContentWithString:(NSString*)string;

+(void)eventLogWithPlatform:(NSString*)platform eventName:(NSString*)eventName parameters:(NSDictionary*)parameters color:(UIColor*)color;

/*!
 @discussion 澶勭悊UIApplicationDelegate鐨勬柟娉昜-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions]浼犻€掕繃鏉ョ殑鍙傛暟銆�
 */
+ (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

#pragma mark 娑堟伅閫氱煡
/*!
@abstract 娉ㄥ唽閫氱煡
*/
+ (void)application:(UIApplication *)application initPushWithDelegate:(id<UNUserNotificationCenterDelegate>)delegate API_AVAILABLE(ios(10.0));

/*!
 @abstract 璋冪敤杩囩敤鎴锋敞鍐岄€氱煡鏂规硶涔嬪悗鎵ц
 */
//+ (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings API_AVAILABLE(ios(8.0));

/*!
 @abstract 鑾峰彇deviceToken
 */
+ (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

/*!
 @abstract 娉ㄥ唽澶辫触
 */
+ (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;

#pragma mark IOS8 IOS9 Push Notification Receive
/*!
 @abstract 鎺ユ敹鏈湴閫氱煡
 */
//+ (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;

/*!
 @abstract 鎺ユ敹杩滅▼閫氱煡
 */
+ (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;

#pragma mark IOS10 Push Notification Receive
/*!
 @abstractApp 澶勪簬鍓嶅彴鎺ユ敹閫氱煡鏃�
 */
+ (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler API_AVAILABLE(ios(10.0)) API_AVAILABLE(ios(10.0)) API_AVAILABLE(ios(10.0));

/*!
 @abstract 閫氱煡鐨勭偣鍑讳簨浠�
 */
+ (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler API_AVAILABLE(ios(10.0)) API_AVAILABLE(ios(10.0));

/*!
 绋嬪簭杩涘叆鍚庡彴
 @discussion 澶勭悊UIApplicationDelegate鐨勬柟娉昜- (void)applicationDidEnterBackground:(UIApplication *)application]浼犻€掕繃鏉ョ殑鍙傛暟銆�
 */
+ (void)applicationDidEnterBackground:(UIApplication *)application;

/*!
 绋嬪簭灏嗚繘鍏ュ墠鍙�
 @discussion 澶勭悊UIApplicationDelegate鐨勬柟娉昜- (void)applicationWillEnterForeground:(UIApplication *)application]浼犻€掕繃鏉ョ殑鍙傛暟銆�
 */
+ (void)applicationWillEnterForeground:(UIApplication *)application;

/*!
 绋嬪簭杩涘叆鍓嶅彴
 @discussion 澶勭悊UIApplicationDelegate鐨勬柟娉昜- (void)applicationDidBecomeActive:(UIApplication *)application]浼犻€掕繃鏉ョ殑鍙傛暟銆�
 */
+ (void)applicationDidBecomeActive:(UIApplication *)application;

/*!
 @discussion 澶勭悊UIApplicationDelegate鐨勬柟娉昜-(BOOL)application:(UIApplication *)application
 openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
 annotation:(id)annotation]浼犻€掕繃鏉ョ殑鍙傛暟銆�
 */
//+ (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

+ (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;

+ (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler API_AVAILABLE(ios(8.0));

//褰撲竴涓柊鐨勫満鏅鍒涘缓鏃惰皟鐢紝鍙互鍦ㄨ繖涓柟娉曚腑閰嶇疆鍦烘櫙銆�
+ (void)scene:(UIScene *_Nonnull)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *_Nonnull)connectionOptions API_AVAILABLE(ios(13.0));
// 褰撳満鏅閿€姣佹椂璋冪敤銆�
+ (void)sceneDidDisconnect:(UIScene *_Nonnull)scene  API_AVAILABLE(ios(13.0));
//褰撳満鏅彉鎴愭椿璺冪姸鎬佹椂璋冪敤銆�
+ (void)sceneDidBecomeActive:(UIScene *_Nonnull)scene API_AVAILABLE(ios(13.0));
//褰撳満鏅皢瑕佸彉鎴愰潪娲昏穬鐘舵€佹椂璋冪敤銆�
+ (void)sceneWillResignActive:(UIScene *_Nonnull)scene API_AVAILABLE(ios(13.0));
//褰撳簲鐢ㄧ▼搴忓嵆灏嗚繘鍏ュ墠鍙版椂璋冪敤銆�
+ (void)sceneWillEnterForeground:(UIScene *_Nonnull)scene  API_AVAILABLE(ios(13.0));
//褰撳簲鐢ㄧ▼搴忚繘鍏ュ悗鍙版椂璋冪敤銆�
+ (void)sceneDidEnterBackground:(UIScene *_Nonnull)scene API_AVAILABLE(ios(13.0));
//褰撳埆鐨凙PP閫氳繃URL鍦板潃锛屾墦寮€鎴戜滑鐨刟pp鏃惰皟鐢�
+  (void)scene:(UIScene *_Nonnull)scene openURLContexts:(NSSet<UIOpenURLContext *> *_Nonnull)URLContexts API_AVAILABLE(ios(13.0));
+ (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity API_AVAILABLE(ios(13.0));

/*!
 @abstract 璁惧鏄惁瓒婄嫳
 */
+ (BOOL)isJailBreak;



@end
NS_ASSUME_NONNULL_END