Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/AppsFlyerLib
New file @@ -0,0 +1 @@ Versions/Current/AppsFlyerLib Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Headers
New file @@ -0,0 +1 @@ Versions/Current/Headers Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Modules/module.modulemap
New file @@ -0,0 +1,6 @@ framework module AppsFlyerLib { umbrella header "AppsFlyerLib.h" export * module * { export * } } Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/AppsFlyerLibBinary files differ
Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/Headers/AppsFlyerCrossPromotionHelper.h
New file @@ -0,0 +1,49 @@ // // CrossPromotionHelper.h // AppsFlyerLib // // Created by Gil Meroz on 27/01/2017. // // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN /** AppsFlyer allows you to log and attribute installs originating from cross promotion campaigns of your existing apps. Afterwards, you can optimize on your cross-promotion traffic to get even better results. */ @interface AppsFlyerCrossPromotionHelper : NSObject /** To log an impression use the following API call. Make sure to use the promoted App ID as it appears within the AppsFlyer dashboard. @param appID Promoted App ID @param campaign A campaign name @param parameters Additional params like `@{@"af_sub1": @"val", @"custom_param": @"val2" }` */ + (void)logCrossPromoteImpression:(nonnull NSString *)appID campaign:(nullable NSString *)campaign parameters:(nullable NSDictionary *)parameters; /** iOS allows you to utilize the StoreKit component to open the App Store while remaining in the context of your app. More details at https://support.appsflyer.com/hc/en-us/articles/115004481946-Cross-Promotion-Tracking#tracking-cross-promotion-impressions @param appID Promoted App ID @param campaign A campaign name @param parameters Additional params like `@{@"af_sub1": @"val", @"custom_param": @"val2" }` @param openStoreBlock Contains promoted `clickURL` */ + (void)logAndOpenStore:(nonnull NSString *)appID campaign:(nullable NSString *)campaign parameters:(nullable NSDictionary *)parameters openStore:(void (^)(NSURLSession *urlSession, NSURL *clickURL))openStoreBlock; @end NS_ASSUME_NONNULL_END Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/Headers/AppsFlyerDeepLink.h
New file @@ -0,0 +1,36 @@ // // AFSDKDeeplink.h // AppsFlyerLib // // Created by Andrii Hahan on 20.08.2020. // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN NS_SWIFT_NAME(DeepLink) @interface AppsFlyerDeepLink : NSObject - (nonnull instancetype)init NS_UNAVAILABLE; + (nonnull instancetype)new NS_UNAVAILABLE; @property (readonly, nonnull) NSDictionary<NSString *, id> *clickEvent; @property (readonly, nullable) NSString *deeplinkValue; @property (readonly, nullable) NSString *matchType; @property (readonly, nullable) NSString *clickHTTPReferrer; @property (readonly, nullable) NSString *mediaSource; @property (readonly, nullable) NSString *campaign; @property (readonly, nullable) NSString *campaignId; @property (readonly, nullable) NSString *afSub1; @property (readonly, nullable) NSString *afSub2; @property (readonly, nullable) NSString *afSub3; @property (readonly, nullable) NSString *afSub4; @property (readonly, nullable) NSString *afSub5; @property (readonly) BOOL isDeferred; - (NSString *)toString; @end NS_ASSUME_NONNULL_END Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/Headers/AppsFlyerDeepLinkResult.h
New file @@ -0,0 +1,29 @@ // // AFSDKDeeplinkResult.h // AppsFlyerLib // // Created by Andrii Hahan on 20.08.2020. // #import <Foundation/Foundation.h> @class AppsFlyerDeepLink; typedef NS_CLOSED_ENUM(NSUInteger, AFSDKDeepLinkResultStatus) { AFSDKDeepLinkResultStatusNotFound, AFSDKDeepLinkResultStatusFound, AFSDKDeepLinkResultStatusFailure, } NS_SWIFT_NAME(DeepLinkResultStatus); NS_SWIFT_NAME(DeepLinkResult) @interface AppsFlyerDeepLinkResult : NSObject - (nonnull instancetype)init NS_UNAVAILABLE; + (nonnull instancetype)new NS_UNAVAILABLE; @property(readonly) AFSDKDeepLinkResultStatus status; @property(readonly, nullable) AppsFlyerDeepLink *deepLink; @property(readonly, nullable) NSError *error; @end Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/Headers/AppsFlyerLib.h
New file @@ -0,0 +1,639 @@ // // AppsFlyerLib.h // AppsFlyerLib // // AppsFlyer iOS SDK 6.2.4 (71) // Copyright (c) 2012-2020 AppsFlyer Ltd. All rights reserved. // #import <Foundation/Foundation.h> #import "AppsFlyerCrossPromotionHelper.h" #import "AppsFlyerShareInviteHelper.h" #import "AppsFlyerDeepLinkResult.h" #import "AppsFlyerDeepLink.h" NS_ASSUME_NONNULL_BEGIN // In app event names constants #define AFEventLevelAchieved @"af_level_achieved" #define AFEventAddPaymentInfo @"af_add_payment_info" #define AFEventAddToCart @"af_add_to_cart" #define AFEventAddToWishlist @"af_add_to_wishlist" #define AFEventCompleteRegistration @"af_complete_registration" #define AFEventTutorial_completion @"af_tutorial_completion" #define AFEventInitiatedCheckout @"af_initiated_checkout" #define AFEventPurchase @"af_purchase" #define AFEventRate @"af_rate" #define AFEventSearch @"af_search" #define AFEventSpentCredits @"af_spent_credits" #define AFEventAchievementUnlocked @"af_achievement_unlocked" #define AFEventContentView @"af_content_view" #define AFEventListView @"af_list_view" #define AFEventTravelBooking @"af_travel_booking" #define AFEventShare @"af_share" #define AFEventInvite @"af_invite" #define AFEventLogin @"af_login" #define AFEventReEngage @"af_re_engage" #define AFEventUpdate @"af_update" #define AFEventOpenedFromPushNotification @"af_opened_from_push_notification" #define AFEventLocation @"af_location_coordinates" #define AFEventCustomerSegment @"af_customer_segment" #define AFEventSubscribe @"af_subscribe" #define AFEventStartTrial @"af_start_trial" #define AFEventAdClick @"af_ad_click" #define AFEventAdView @"af_ad_view" // In app event parameter names #define AFEventParamContent @"af_content" #define AFEventParamAchievementId @"af_achievement_id" #define AFEventParamLevel @"af_level" #define AFEventParamScore @"af_score" #define AFEventParamSuccess @"af_success" #define AFEventParamPrice @"af_price" #define AFEventParamContentType @"af_content_type" #define AFEventParamContentId @"af_content_id" #define AFEventParamContentList @"af_content_list" #define AFEventParamCurrency @"af_currency" #define AFEventParamQuantity @"af_quantity" #define AFEventParamRegistrationMethod @"af_registration_method" #define AFEventParamPaymentInfoAvailable @"af_payment_info_available" #define AFEventParamMaxRatingValue @"af_max_rating_value" #define AFEventParamRatingValue @"af_rating_value" #define AFEventParamSearchString @"af_search_string" #define AFEventParamDateA @"af_date_a" #define AFEventParamDateB @"af_date_b" #define AFEventParamDestinationA @"af_destination_a" #define AFEventParamDestinationB @"af_destination_b" #define AFEventParamDescription @"af_description" #define AFEventParamClass @"af_class" #define AFEventParamEventStart @"af_event_start" #define AFEventParamEventEnd @"af_event_end" #define AFEventParamLat @"af_lat" #define AFEventParamLong @"af_long" #define AFEventParamCustomerUserId @"af_customer_user_id" #define AFEventParamValidated @"af_validated" #define AFEventParamRevenue @"af_revenue" #define AFEventProjectedParamRevenue @"af_projected_revenue" #define AFEventParamReceiptId @"af_receipt_id" #define AFEventParamTutorialId @"af_tutorial_id" #define AFEventParamVirtualCurrencyName @"af_virtual_currency_name" #define AFEventParamDeepLink @"af_deep_link" #define AFEventParamOldVersion @"af_old_version" #define AFEventParamNewVersion @"af_new_version" #define AFEventParamReviewText @"af_review_text" #define AFEventParamCouponCode @"af_coupon_code" #define AFEventParamOrderId @"af_order_id" #define AFEventParam1 @"af_param_1" #define AFEventParam2 @"af_param_2" #define AFEventParam3 @"af_param_3" #define AFEventParam4 @"af_param_4" #define AFEventParam5 @"af_param_5" #define AFEventParam6 @"af_param_6" #define AFEventParam7 @"af_param_7" #define AFEventParam8 @"af_param_8" #define AFEventParam9 @"af_param_9" #define AFEventParam10 @"af_param_10" #define AFEventParamDepartingDepartureDate @"af_departing_departure_date" #define AFEventParamReturningDepartureDate @"af_returning_departure_date" #define AFEventParamDestinationList @"af_destination_list" //array of string #define AFEventParamCity @"af_city" #define AFEventParamRegion @"af_region" #define AFEventParamCountry @"af_country" #define AFEventParamDepartingArrivalDate @"af_departing_arrival_date" #define AFEventParamReturningArrivalDate @"af_returning_arrival_date" #define AFEventParamSuggestedDestinations @"af_suggested_destinations" //array of string #define AFEventParamTravelStart @"af_travel_start" #define AFEventParamTravelEnd @"af_travel_end" #define AFEventParamNumAdults @"af_num_adults" #define AFEventParamNumChildren @"af_num_children" #define AFEventParamNumInfants @"af_num_infants" #define AFEventParamSuggestedHotels @"af_suggested_hotels" //array of string #define AFEventParamUserScore @"af_user_score" #define AFEventParamHotelScore @"af_hotel_score" #define AFEventParamPurchaseCurrency @"af_purchase_currency" #define AFEventParamPreferredStarRatings @"af_preferred_star_ratings" //array of int (basically a tuple (min,max) but we'll use array of int and instruct the developer to use two values) #define AFEventParamPreferredPriceRange @"af_preferred_price_range" //array of int (basically a tuple (min,max) but we'll use array of int and instruct the developer to use two values) #define AFEventParamPreferredNeighborhoods @"af_preferred_neighborhoods" //array of string #define AFEventParamPreferredNumStops @"af_preferred_num_stops" #define AFEventParamAdRevenueAdType @"af_adrev_ad_type" #define AFEventParamAdRevenueNetworkName @"af_adrev_network_name" #define AFEventParamAdRevenuePlacementId @"af_adrev_placement_id" #define AFEventParamAdRevenueAdSize @"af_adrev_ad_size" #define AFEventParamAdRevenueMediatedNetworkName @"af_adrev_mediated_network_name" /// Mail hashing type typedef enum { /// None EmailCryptTypeNone = 0, /// SHA1 EmailCryptTypeSHA1 = 1, /// MD5 EmailCryptTypeMD5 = 2, /// SHA256 EmailCryptTypeSHA256 = 3 } EmailCryptType; NS_SWIFT_NAME(DeepLinkDelegate) @protocol AppsFlyerDeepLinkDelegate <NSObject> @optional - (void)didResolveDeepLink:(AppsFlyerDeepLinkResult *_Nonnull)result; @end /** Conform and subscribe to this protocol to allow getting data about conversion and install attribution */ @protocol AppsFlyerLibDelegate <NSObject> /** `conversionInfo` contains information about install. Organic/non-organic, etc. @param conversionInfo May contain <code>null</code> values for some keys. Please handle this case. */ - (void)onConversionDataSuccess:(NSDictionary *)conversionInfo; /** Any errors that occurred during the conversion request. */ - (void)onConversionDataFail:(NSError *)error; @optional /** `attributionData` contains information about OneLink, deeplink. */ - (void)onAppOpenAttribution:(NSDictionary *)attributionData; /** Any errors that occurred during the attribution request. */ - (void)onAppOpenAttributionFailure:(NSError *)error; /** @abstract Sets the HTTP header fields of the ESP resolving to the given dictionary. @discussion This method replaces all header fields that may have existed before this method ESP resolving call. To keep default SDK behavior - return nil; */ - (NSDictionary <NSString *, NSString *> * _Nullable)allHTTPHeaderFieldsForResolveDeepLinkURL:(NSURL *)URL; @end /** You can log installs, app updates, sessions and additional in-app events (including in-app purchases, game levels, etc.) to evaluate ROI and user engagement. The iOS SDK is compatible with all iOS/tvOS devices with iOS version 7 and above. @see [SDK Integration Validator](https://support.appsflyer.com/hc/en-us/articles/207032066-AppsFlyer-SDK-Integration-iOS) for more information. */ @interface AppsFlyerLib : NSObject /** Gets the singleton instance of the AppsFlyerLib class, creating it if necessary. @return The singleton instance of AppsFlyerLib. */ + (AppsFlyerLib *)shared; /** In case you use your own user ID in your app, you can set this property to that ID. Enables you to cross-reference your own unique ID with AppsFlyer’s unique ID and the other devices’ IDs */ @property(nonatomic, strong, nullable) NSString * customerUserID; /** In case you use custom data and you want to receive it in the raw reports. @see [Setting additional custom data](https://support.appsflyer.com/hc/en-us/articles/207032066-AppsFlyer-SDK-Integration-iOS#setting-additional-custom-data) for more information. */ @property(nonatomic, strong, nullable, setter = setAdditionalData:) NSDictionary * customData; /** Use this property to set your AppsFlyer's dev key */ @property(nonatomic, strong) NSString * appsFlyerDevKey; /** Use this property to set your app's Apple ID(taken from the app's page on iTunes Connect) */ @property(nonatomic, strong) NSString * appleAppID; #ifndef AFSDK_NO_IDFA /** AppsFlyer SDK collect Apple's `advertisingIdentifier` if the `AdSupport.framework` included in the SDK. You can disable this behavior by setting the following property to YES */ @property(nonatomic) BOOL disableAdvertisingIdentifier; @property(nonatomic, strong, readonly) NSString *advertisingIdentifier; /** Waits for request user authorization to access app-related data */ - (void)waitForATTUserAuthorizationWithTimeoutInterval:(NSTimeInterval)timeoutInterval NS_SWIFT_NAME(waitForATTUserAuthorization(timeoutInterval:)); #endif @property(nonatomic) BOOL disableSKAdNetwork; /** In case of in app purchase events, you can set the currency code your user has purchased with. The currency code is a 3 letter code according to ISO standards Objective-C: <pre> [[AppsFlyerLib shared] setCurrencyCode:@"USD"]; </pre> Swift: <pre> AppsFlyerLib.shared().currencyCode = "USD" </pre> */ @property(nonatomic, strong, nullable) NSString *currencyCode; /** Prints SDK messages to the console log. This property should only be used in `DEBUG` mode. The default value is `NO` */ @property(nonatomic) BOOL isDebug; /** Set this flag to `YES`, to collect the current device name(e.g. "My iPhone"). Default value is `NO` */ @property(nonatomic) BOOL shouldCollectDeviceName; /** Set your `OneLink ID` from OneLink configuration. Used in User Invites to generate a OneLink. */ @property(nonatomic, strong, nullable, setter = setAppInviteOneLink:) NSString * appInviteOneLinkID; /** Opt-out logging for specific user */ @property(atomic) BOOL anonymizeUser; /** Opt-out for Apple Search Ads attributions */ @property(atomic) BOOL disableCollectASA; @property(nonatomic) BOOL disableAppleAdsAttribution; /** AppsFlyer delegate. See `AppsFlyerLibDelegate` */ @property(weak, nonatomic) id<AppsFlyerLibDelegate> delegate; @property(weak, nonatomic) id<AppsFlyerDeepLinkDelegate> deepLinkDelegate; /** In app purchase receipt validation Apple environment(production or sandbox). The default value is NO */ @property(nonatomic) BOOL useReceiptValidationSandbox; /** Set this flag to test uninstall on Apple environment(production or sandbox). The default value is NO */ @property(nonatomic) BOOL useUninstallSandbox; /** For advertisers who wrap OneLink within another Universal Link. An advertiser will be able to deeplink from a OneLink wrapped within another Universal Link and also log this retargeting conversion. Objective-C: <pre> [[AppsFlyerLib shared] setResolveDeepLinkURLs:@[@"domain.com", @"subdomain.domain.com"]]; </pre> */ @property(nonatomic, nullable) NSArray<NSString *> *resolveDeepLinkURLs; /** For advertisers who use vanity OneLinks. Objective-C: <pre> [[AppsFlyerLib shared] oneLinkCustomDomains:@[@"domain.com", @"subdomain.domain.com"]]; </pre> */ @property(nonatomic, nullable) NSArray<NSString *> *oneLinkCustomDomains; /* * Set phone number for each `start` event. `phoneNumber` will be sent as SHA256 string */ @property(nonatomic, nullable) NSString *phoneNumber; - (NSString *)phoneNumber UNAVAILABLE_ATTRIBUTE; /** To disable app's vendor identifier(IDFV), set disableIDFVCollection to true */ @property(nonatomic) BOOL disableIDFVCollection; /** Enable the collection of Facebook Deferred AppLinks Requires Facebook SDK and Facebook app on target/client device. This API must be invoked prior to initializing the AppsFlyer SDK in order to function properly. Objective-C: <pre> [[AppsFlyerLib shared] enableFacebookDeferredApplinksWithClass:[FBSDKAppLinkUtility class]] </pre> Swift: <pre> AppsFlyerLib.shared().enableFacebookDeferredApplinks(with: FBSDKAppLinkUtility.self) </pre> @param facebookAppLinkUtilityClass requeries method call `[FBSDKAppLinkUtility class]` as param. */ - (void)enableFacebookDeferredApplinksWithClass:(Class _Nullable)facebookAppLinkUtilityClass; /** Use this to send the user's emails @param userEmails The list of strings that hold mails @param type Hash algoritm */ - (void)setUserEmails:(NSArray<NSString *> * _Nullable)userEmails withCryptType:(EmailCryptType)type; /** Start SDK session Add the following method at the `applicationDidBecomeActive` in AppDelegate class */ - (void)start; - (void)startWithCompletionHandler:(void (^ _Nullable)(NSDictionary<NSString *, id> * _Nullable dictionary, NSError * _Nullable error))completionHandler; /** Use this method to log an events with multiple values. See AppsFlyer's documentation for details. Objective-C: <pre> [[AppsFlyerLib shared] logEvent:AFEventPurchase withValues: @{AFEventParamRevenue : @200, AFEventParamCurrency : @"USD", AFEventParamQuantity : @2, AFEventParamContentId: @"092", AFEventParamReceiptId: @"9277"}]; </pre> Swift: <pre> AppsFlyerLib.shared().logEvent(AFEventPurchase, withValues: [AFEventParamRevenue : "1200", AFEventParamContent : "shoes", AFEventParamContentId: "123"]) </pre> @param eventName Contains name of event that could be provided from predefined constants in `AppsFlyerLib.h` @param values Contains dictionary of values for handling by backend */ - (void)logEvent:(NSString *)eventName withValues:(NSDictionary * _Nullable)values; - (void)logEventWithEventName:(NSString *)eventName eventValues:(NSDictionary<NSString * , id> * _Nullable)eventValues completionHandler:(void (^ _Nullable)(NSDictionary<NSString *, id> * _Nullable dictionary, NSError * _Nullable error))completionHandler NS_SWIFT_NAME(logEvent(name:values:completionHandler:)); /** To log and validate in app purchases you can call this method from the completeTransaction: method on your `SKPaymentTransactionObserver`. @param productIdentifier The product identifier @param price The product price @param currency The product currency @param transactionId The purchase transaction Id @param params The additional param, which you want to receive it in the raw reports @param successBlock The success callback @param failedBlock The failure callback */ - (void)validateAndLogInAppPurchase:(NSString * _Nullable)productIdentifier price:(NSString * _Nullable)price currency:(NSString * _Nullable)currency transactionId:(NSString * _Nullable)transactionId additionalParameters:(NSDictionary * _Nullable)params success:(void (^ _Nullable)(NSDictionary * response))successBlock failure:(void (^ _Nullable)(NSError * _Nullable error, id _Nullable reponse))failedBlock NS_AVAILABLE(10_7, 7_0); /** To log location for geo-fencing. Does the same as code below. <pre> AppsFlyerLib.shared().logEvent(AFEventLocation, withValues: [AFEventParamLong:longitude, AFEventParamLat:latitude]) </pre> @param longitude The location longitude @param latitude The location latitude */ - (void)logLocation:(double)longitude latitude:(double)latitude NS_SWIFT_NAME(logLocation(longitude:latitude:)); /** This method returns AppsFlyer's internal id(unique for your app) @return Internal AppsFlyer Id */ - (NSString *)getAppsFlyerUID; /** In case you want to log deep linking. Does the same as `-handleOpenURL:sourceApplication:withAnnotation`. @warning Preferred to use `-handleOpenURL:sourceApplication:withAnnotation`. @param url The URL that was passed to your AppDelegate. @param sourceApplication The sourceApplication that passed to your AppDelegate. */ - (void)handleOpenURL:(NSURL * _Nullable)url sourceApplication:(NSString * _Nullable)sourceApplication API_UNAVAILABLE(macos); /** In case you want to log deep linking. Call this method from inside your AppDelegate `-application:openURL:sourceApplication:annotation:` @param url The URL that was passed to your AppDelegate. @param sourceApplication The sourceApplication that passed to your AppDelegate. @param annotation The annotation that passed to your app delegate. */ - (void)handleOpenURL:(NSURL * _Nullable)url sourceApplication:(NSString * _Nullable)sourceApplication withAnnotation:(id _Nullable)annotation API_UNAVAILABLE(macos); /** Call this method from inside of your AppDelegate `-application:openURL:options:` method. This method is functionally the same as calling the AppsFlyer method `-handleOpenURL:sourceApplication:withAnnotation`. @param url The URL that was passed to your app delegate @param options The options dictionary that was passed to your AppDelegate. */ - (void)handleOpenUrl:(NSURL * _Nullable)url options:(NSDictionary * _Nullable)options API_UNAVAILABLE(macos); /** Allow AppsFlyer to handle restoration from an NSUserActivity. Use this method to log deep links with OneLink. @param userActivity The NSUserActivity that caused the app to be opened. */ - (BOOL)continueUserActivity:(NSUserActivity * _Nullable)userActivity restorationHandler:(void (^ _Nullable)(NSArray * _Nullable))restorationHandler NS_AVAILABLE_IOS(9_0) API_UNAVAILABLE(macos); /** Enable AppsFlyer to handle a push notification. @see [Learn more here](https://support.appsflyer.com/hc/en-us/articles/207364076-Measuring-Push-Notification-Re-Engagement-Campaigns) @warning To make it work - set data, related to AppsFlyer under key @"af". @param pushPayload The `userInfo` from received remote notification. One of root keys should be @"af". */ - (void)handlePushNotification:(NSDictionary * _Nullable)pushPayload; /** Register uninstall - you should register for remote notification and provide AppsFlyer the push device token. @param deviceToken The `deviceToken` from `-application:didRegisterForRemoteNotificationsWithDeviceToken:` */ - (void)registerUninstall:(NSData * _Nullable)deviceToken; /** Get SDK version. @return The AppsFlyer SDK version info. */ - (NSString *)getSDKVersion; /** This is for internal use. */ - (void)remoteDebuggingCallWithData:(NSString *)data; /** Used to force the trigger `onAppOpenAttribution` delegate. Notice, re-engagement, session and launch won't be counted. Only for OneLink/UniversalLink/Deeplink resolving. @param URL The param to resolve into -[AppsFlyerLibDelegate onAppOpenAttribution:] */ - (void)performOnAppAttributionWithURL:(NSURL * _Nullable)URL; /** @brief This property accepts a string value representing the host name for all endpoints. Can be used to Zero rate your application’s data usage. Contact your CSM for more information. @warning To use `default` SDK endpoint – set value to `nil`. Objective-C: <pre> [[AppsFlyerLib shared] setHost:@"example.com"]; </pre> Swift: <pre> AppsFlyerLib.shared().host = "example.com" </pre> */ @property(nonatomic, strong, readonly) NSString *host; /** * This function set the host name and prefix host name for all the endpoints **/ - (void)setHost:(NSString *)host withHostPrefix:(NSString *)hostPrefix; /** * This property accepts a string value representing the prefix host name for all endpoints. * for example "test" prefix with default host name will have the address "host.appsflyer.com" */ @property(nonatomic, strong, readonly) NSString *hostPrefix; /** This property is responsible for timeout between sessions in seconds. Default value is 5 seconds. */ @property(atomic) NSUInteger minTimeBetweenSessions; /** API to shut down all SDK activities. @warning This will disable all requests from AppsFlyer SDK. */ @property(atomic) BOOL isStopped; /** API to set manually Facebook deferred app link */ @property(nonatomic, nullable) NSURL *facebookDeferredAppLink; /** Block an events from being shared with ad networks and other 3rd party integrations Must only include letters/digits or underscore, maximum length: 45 */ @property(nonatomic, nullable) NSArray<NSString *> *sharingFilter; @property(nonatomic) NSUInteger deepLinkTimeout; /** Block an events from being shared with any partner This method overwrite -[AppsFlyerLib setSharingFilter:] */ -(void)setSharingFilterForAllPartners; /** Validate if URL contains certain string and append quiery parameters to deeplink URL. In case if URL does not contain user-defined string, parameters are not appended to the url. @param containsString string to check in URL. @param parameters NSDictionary, which containins parameters to append to the deeplink url after it passed validation. */ - (void)appendParametersToDeepLinkingURLWithString:(NSString *)containsString parameters:(NSDictionary<NSString *, NSString*> *)parameters NS_SWIFT_NAME(appendParametersToDeeplinkURL(contains:parameters:)); /** Adds array of keys, which are used to compose key path to resolve deeplink from push notification payload `userInfo`. @param deepLinkPath an array of strings which contains keys to search for deeplink in payload. */ - (void)addPushNotificationDeepLinkPath:(NSArray<NSString *> *)deepLinkPath; /** * Allows sending custom data for partner integration purposes. * * @param partnerId ID of the partner (usually has "_int" suffix) * @param partnerInfo customer data, depends on the integration nature with specific partner */ - (void)setPartnerDataWithPartnerId:(NSString * _Nullable)partnerId partnerInfo:(NSDictionary<NSString *, id> * _Nullable)partnerInfo NS_SWIFT_NAME(setPartnerData(partnerId:partnerInfo:)); @end NS_ASSUME_NONNULL_END Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/Headers/AppsFlyerLinkGenerator.h
New file @@ -0,0 +1,52 @@ // // LinkGenerator.h // AppsFlyerLib // // Created by Gil Meroz on 27/01/2017. // // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN /** Payload container for the `generateInviteUrlWithLinkGenerator:completionHandler:` from `AppsFlyerShareInviteHelper` */ @interface AppsFlyerLinkGenerator : NSObject /// Instance initialization is not allowed. Use generated instance /// from `-[AppsFlyerShareInviteHelper generateInviteUrlWithLinkGenerator:completionHandler]` - (instancetype)init NS_UNAVAILABLE; /// Instance initialization is not allowed. Use generated instance /// from `-[AppsFlyerShareInviteHelper generateInviteUrlWithLinkGenerator:completionHandler]` + (instancetype)new NS_UNAVAILABLE; @property(nonatomic, nullable) NSString *brandDomain; /// The channel through which the invite was sent (e.g. Facebook/Gmail/etc.). Usage: Recommended - (void)setChannel :(nonnull NSString *)channel; /// ReferrerCustomerId setter - (void)setReferrerCustomerId:(nonnull NSString *)referrerCustomerId; /// A campaign name. Usage: Optional - (void)setCampaign :(nonnull NSString *)campaign; /// ReferrerUID setter - (void)setReferrerUID :(nonnull NSString *)referrerUID; /// Referrer name - (void)setReferrerName :(nonnull NSString *)referrerName; /// The URL to referrer user avatar. Usage: Optional - (void)setReferrerImageURL :(nonnull NSString *)referrerImageURL; /// AppleAppID - (void)setAppleAppID :(nonnull NSString *)appleAppID; /// Deeplink path - (void)setDeeplinkPath :(nonnull NSString *)deeplinkPath; /// Base deeplink path - (void)setBaseDeeplink :(nonnull NSString *)baseDeeplink; /// A single key value custom parameter. Usage: Optional - (void)addParameterValue :(nonnull NSString *)value forKey:(NSString *)key; /// Multiple key value custom parameters. Usage: Optional - (void)addParameters :(nonnull NSDictionary *)parameters; @end NS_ASSUME_NONNULL_END Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/A/Headers/AppsFlyerShareInviteHelper.h
New file @@ -0,0 +1,35 @@ // // ShareInviteHelper.h // AppsFlyerLib // // Created by Gil Meroz on 27/01/2017. // // #import <Foundation/Foundation.h> #import "AppsFlyerLinkGenerator.h" /** AppsFlyerShareInviteHelper */ @interface AppsFlyerShareInviteHelper : NSObject NS_ASSUME_NONNULL_BEGIN /** * The AppsFlyerShareInviteHelper class builds the invite URL according to various setter methods * which allow passing on additional information on the click. * This information is available through `onConversionDataReceived:` when the user accepts the invite and installs the app. * In addition, campaign and channel parameters are visible within the AppsFlyer Dashboard. */ + (void)generateInviteUrlWithLinkGenerator:(AppsFlyerLinkGenerator *(^)(AppsFlyerLinkGenerator *generator))generatorCreator completionHandler:(void (^)(NSURL *_Nullable url))completionHandler; /** * It is recommended to generate an in-app event after the invite is sent to log the invites from the senders' perspective. * This enables you to find the users that tend most to invite friends, and the media sources that get you these users. */ + (void)logInvite:(nullable NSString *)channel parameters:(nullable NSDictionary *)parameters; @end NS_ASSUME_NONNULL_END Channel/IOS/gtios/Plugins/AppsFlyerLib.framework/Versions/Current
New file @@ -0,0 +1 @@ A Channel/IOS/gtios/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png
Channel/IOS/gtios/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist
New file @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>JPush_AppKey</key> <string>111a5f817592ddc68edc802c</string> <key>TTTrack_AppID</key> <string>155761</string> <key>TrackingIO_AppKey</key> <string>12aef4c284c6996703765fe9f7422428</string> </dict> </plist> Channel/IOS/gtios/Plugins/The2thWorldSDK/UniversalSDK.h
New file @@ -0,0 +1,78 @@ // // UniversalSDK.h // Unity-iPhone // // Created by 蔡瀚 on 2018/4/24. // #ifndef __UNIVERSALSDK_H_ #define __UNIVERSALSDK_H_ #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #define UNITY_OBJ_NAME "SDKUtility" #define UNITY_FUNC_NAME "HandleSdkMessage" #define YYJ_APPID @"25969262062227241391437599980432" #define YYJ_APPSCHEME @"93995626" #define S2U_BatteryLevel 1 #define S2U_BatteryCharging 2 #define S2U_SdkInitComplete 3 #define S2U_DeviceInfo 4 #define S2U_PushClientID 5 #define S2U_FreePlatformInitOk 100 #define S2U_FreePlatformInitFail 101 #define S2U_FreePlatformLoginOk 102 #define S2U_FreePlatformLoginFail 103 #define S2U_FreePlatformLoginCancel 104 #define S2U_FreePlatformLogoutOk 105 #define S2U_FreePlatformLogoutFail 106 #define S2U_FreePlatformSwitchAccountOk 107 #define S2U_FreePlatformPayOk 108 #define S2U_FreePlatformPayFail 109 #define S2U_FreePlatformPayCancel 110 #define S2U_FreePlatformRegisterOk 111 #define U2S_BatteryListenStart 1 #define U2S_BatteryListenStop 2 #define U2S_CopyContent 7 #define U2S_OpenWebView 8 #define U2S_Init 9 #define U2S_FreePlatformInit 100 #define U2S_FreePlatformLogin 101 #define U2S_FreePlatformLogout 102 #define U2S_FreePlatformSwitchAccount 103 #define U2S_FreePlatformPay 104 #define U2S_PayFinished 105 #define U2S_CreateRole 106 #define U2S_RoleLogin 107 #define U2S_RoleLevelUp 108 #define U2S_JPushAddLocalMessage 200 #define U2S_JPushRemoveLocalMessage 201 #define U2S_MakeKeyAndVisible 300 #define U2S_SendRegistEvent 500 #define U2S_SendLoginEvent 600 #define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) static BOOL JPush_IsProduction = FALSE; @interface UniversalSDK : NSObject { UIWebView* m_UIWebView; UIButton* m_CloseBtn; } -(void) HandleUnityMessage:(NSString*) json; -(void) Init; -(id) APNativeJSONObject:(NSData*) data; -(NSData*) APNativeJSONData:(id) obj; -(void) RemoveLocalNotificationWithIdentifierKey:(NSString*) idKey; -(void) QuickSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; @end #endif Channel/IOS/gtios/Plugins/The2thWorldSDK/UniversalSDK.mm
New file @@ -0,0 +1,498 @@ // // UniversalSDK.m // Unity-iPhone // // Created by 蔡瀚 on 2018/4/24. // #import "UniversalSDK.h" #import "AdSupport/AdSupport.h" #import "opus.h" #ifdef NSFoundationVersionNumber_iOS_9_x_Max #import <UserNotifications/UserNotifications.h> #endif #import "SystemConfiguration/CaptiveNetwork.h" #import <YYJPlatform/YYJPlatform.h> @interface UniversalSDK()<UIWebViewDelegate> @end @implementation UniversalSDK #define CHANNEL_NUM 1 static int s_frequency = 16000; static int s_bitRate = 20000; static int s_bandMode = OPUS_BANDWIDTH_WIDEBAND; static int s_frameSize = 160; static int sBatteryLevel = -1; static int sBatteryState = -1; static NSString* sAppID; static NSString* sGameID; static NSString* sUserName; static NSThread* _thread; static int initedState=0; //初始化状态,0初始化中,1成功,2失败 static NSString * const kClientID = @"185347479213-doi46trvoviu8l04tr5qe7uvbs6oelse.apps.googleusercontent.com"; -(void) Init { UIDevice *_device = [UIDevice currentDevice]; _device.batteryMonitoringEnabled = true; NSString* _uniqueID = [[NSUserDefaults standardUserDefaults] objectForKey:@"tsw_unique_id"]; //获取IDFA NSString* _idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; if(_uniqueID == NULL || [_uniqueID length] <= 0) { //判断IDFA是否为空 BOOL isEmpty = [[_idfa stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@"0" withString:@""].length; if (isEmpty) { //不为空,将IDFA作为唯一标识 _uniqueID = _idfa; } else { //为空,获取UUID作为唯一标识 _uniqueID = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; } //保存唯一设备标识,如已存在则不进行任何处理 [[NSUserDefaults standardUserDefaults] setObject:_uniqueID forKey:@"tsw_unique_id"]; [[NSUserDefaults standardUserDefaults] synchronize]; } // 取得UserAgent UIWebView* _webView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSString* _userAgent = [_webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; // 发送设备信息 NSMutableDictionary *_dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: _uniqueID,@"unique_id", _idfa,@"android_id", [NSNumber numberWithInt:S2U_DeviceInfo],@"code", _userAgent,@"userAgent",nil]; [self SendMessageToUnity:_dict]; } -(void)SendMessageToUnity:(NSDictionary*)dict { BOOL _result = [NSJSONSerialization isValidJSONObject:dict]; if(_result) { NSData* _jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL]; UnitySendMessage(UNITY_OBJ_NAME, UNITY_FUNC_NAME, [[[NSString alloc] initWithData:_jsonData encoding:NSUTF8StringEncoding] UTF8String]); } } -(void) BatteryThread { while (TRUE) { [NSThread sleepForTimeInterval:1]; UIDevice *_device = [UIDevice currentDevice]; int _state = [_device batteryState]; if(_state != sBatteryState){ sBatteryState = _state; NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:sBatteryState], @"status", [NSNumber numberWithInt:S2U_BatteryCharging], @"code", nil]; [self SendMessageToUnity:_dict]; } int _level = (int)([_device batteryLevel] * 100); if(_level != sBatteryLevel){ sBatteryLevel = _level; NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:sBatteryLevel], @"level", [NSNumber numberWithInt:S2U_BatteryLevel], @"code", nil]; [self SendMessageToUnity:_dict]; } } } -(void) OpenURL:(NSString*) url { if(m_UIWebView != NULL) { [self btnClick:NULL]; return; } CGRect _bounds = UnityGetMainWindow().bounds; float _scale = _bounds.size.width / 1334; float _width = 982 * _scale; float _height = 560 * _scale; float _offsetX = (_bounds.size.width - _width) * .5f; float _offsetY = (_bounds.size.height - _height) * .5f; m_UIWebView = [[UIWebView alloc] initWithFrame:CGRectMake(_offsetX, _offsetY, _width, _height)]; m_UIWebView.delegate = self; m_UIWebView.scalesPageToFit = YES ; m_UIWebView.scrollView.scrollEnabled = YES; m_UIWebView.scrollView.bounces = NO; NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:url]]; [m_UIWebView loadRequest:request]; } -(void) btnClick:(UIButton*)sender { [m_CloseBtn removeFromSuperview]; [m_CloseBtn removeTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; m_CloseBtn = NULL; NSURLCache *_cache = [NSURLCache sharedURLCache]; [_cache removeAllCachedResponses]; [_cache setDiskCapacity:0]; [_cache setMemoryCapacity:0]; [m_UIWebView removeFromSuperview]; m_UIWebView = NULL; } -(void)webViewDidStartLoad:(UIWebView *)webView{ } -(void)webViewDidFinishLoad:(UIWebView *)webView{ [UnityGetMainWindow().rootViewController.view addSubview:m_UIWebView]; CGRect _bounds = UnityGetMainWindow().bounds; float _scale = _bounds.size.width / 1334; float _width = 982 * _scale; float _height = 560 * _scale; m_CloseBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [m_CloseBtn setFrame:CGRectMake(_width - 455 * _scale, _height - 86 * _scale, 180 * _scale, 72 * _scale)]; [m_CloseBtn setTitle:@"我知道了" forState:UIControlStateNormal]; NSString *_bundlePath = [[NSBundle mainBundle] pathForResource:@"The2thWorldRES.bundle" ofType:nil]; NSBundle *_bundle = [NSBundle bundleWithPath:_bundlePath]; NSString *pic1Path = [_bundle pathForResource:@"TY_AN_34.png" ofType:nil]; [m_CloseBtn setBackgroundImage:[UIImage imageWithContentsOfFile:pic1Path] forState:UIControlStateNormal]; [m_CloseBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [m_CloseBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; [m_UIWebView addSubview:m_CloseBtn]; } -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ } -(void)QuickSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /* 初始化完成之后,会有初始化完成通知( yyj_PlatformInitDidFinishedNotification )开 发者在该回调⽅法中做登录操作 该通知应注册在初始化之前 */ //添加⼀个初始化通知观察者,初始化结束后,登录等操作务必在收到该通知后调⽤ [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(YYJPlatformInitFinished) name:yyj_PlatformInitDidFinishedNotification object:nil]; //初始化失败 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(YYJPlatformInitFinished) name:yyj_PlatformInitFinishedFailNotification object:nil]; //添加⼀个登录成功通知观察者,调⽤悬浮框等操作务必在收到该通知后调⽤ [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(YYJPlatformLogin) name:yyj_PlatformLoginNotification object:nil]; //添加⼀个注销成功通知观察者 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(YYJPlatformLogout) name:yyj_PlatformLogoutNotification object:nil]; // 添加⼀个⽀付成功通知观察者 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(YYJPlatformBMaiSuccessful) name:yyj_PlatformBMaiSuccessfulNotification object:nil]; // 添加⼀个⽀付失败通知观察者 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(YYJPlatformBMaiFail) name:yyj_PlatformBMaiFailNotification object:nil]; //添加⼀个实名认证⻚⾯关闭通知观察者 // [[NSNotificationCenter defaultCenter]addObserver:self // selector:@selector(YYJPlatformRealNameAuthenticationClose) // name:yyj_PlatformRealNameAuthenticationCloseNotification object:nil]; #ifdef DEBUG // 输出⽇志 [[YYJPlatform yyj_defaultPlatform]yyj_isShowLog:YES]; #endif [self initYYJSdk]; } -(void) initYYJSdk{ NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; // SDK初始化,务必放在其他接⼝调⽤之前 [[YYJPlatform yyj_defaultPlatform]yyj_initializeWithAppId: YYJ_APPID gameVersion:app_Version appScheme: YYJ_APPSCHEME]; initedState=0; } - (void)YYJPlatformInitFinished{ NSLog(@"渠道初始化成功"); initedState=1; NSMutableDictionary *_dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:S2U_SdkInitComplete], @"code", @"sanxia", @"channelPlatform", nil]; [self SendMessageToUnity:_dict]; } - (void)YYJPlatformInitFinishedFail{ NSLog(@"渠道初始化失败"); initedState=2; } - (void)YYJPlatformLogin { NSLog(@"渠道登录成功"); NSString *account = [[YYJPlatform yyj_defaultPlatform] yyj_userUID]; NSString *game_id = [[YYJPlatform yyj_defaultPlatform] yyj_gameId]; NSString *session_id = [[YYJPlatform yyj_defaultPlatform] yyj_token]; NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSDictionary dictionaryWithObjectsAndKeys:account, @"account", game_id, @"game_id", session_id, @"session_id", nil],@"info", [NSNumber numberWithInt:S2U_FreePlatformLoginOk], @"code", nil]; [self SendMessageToUnity:_dict]; [[YYJPlatform yyj_defaultPlatform]yyj_showFloatWindow]; //显示悬浮窗 } - (void)YYJPlatformLogout { NSLog(@"渠道注销成功"); NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:S2U_FreePlatformLogoutOk], @"code", nil]; [self SendMessageToUnity:_dict]; } - (void)YYJPlatformBMaiSuccessful{ NSLog(@"渠道支付成功"); NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:S2U_FreePlatformPayOk], @"code", nil]; [self SendMessageToUnity:_dict]; } - (void) YYJPlatformBMaiFail{ NSLog(@"渠道支付失败"); NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:S2U_FreePlatformPayFail], @"code", nil]; [self SendMessageToUnity:_dict]; } -(id) APNativeJSONObject:(NSData *)data{ if (!data) { return nil; } NSError *error = nil; id retId = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; if (error) { NSLog(@"%s trans data to obj with error: %@", __func__, error); return nil; } return retId; } -(void) PlatformLogin{ switch (initedState) { case 0: { } break; case 1: [[YYJPlatform yyj_defaultPlatform]yyj_userLogin]; break; case 2: [self initYYJSdk]; break; default: break; } } -(void)HandleUnityMessage:(NSString *)json { NSLog(@"收到Unity发来的消息 => %@", json); NSData *_jsonData = [json dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *_dict = [self APNativeJSONObject:_jsonData]; switch([[_dict objectForKey:@"code"] intValue]){ case U2S_Init: sAppID = _dict[@"appID"]; sGameID = _dict[@"gameID"]; [self Init]; break; case U2S_CopyContent: [UIPasteboard generalPasteboard].string = _dict[@"content"]; break; case U2S_FreePlatformInit: break; case U2S_MakeKeyAndVisible: { UIWindow * _window = [[UIApplication sharedApplication].delegate window]; if (_window != nil && _window.rootViewController != nil) { [_window makeKeyAndVisible]; } } break; case U2S_OpenWebView: [self OpenURL:_dict[@"url"]]; break; case U2S_FreePlatformLogin: [self PlatformLogin]; break; case U2S_FreePlatformLogout: { [[YYJPlatform yyj_defaultPlatform]yyj_userLogout]; } break; case U2S_CreateRole: { // 更新角色信息 NSString *serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]]; NSString *gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]]; NSString *serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; NSString *gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]]; NSString *gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]]; [[YYJPlatform yyj_defaultPlatform]yyj_submitRoleInfoWithServerid:serverId andServerName:serverName andCharid:gameRoleID andRoleName:gameRoleName andRolelevel:gameUserLevel]; break; } case U2S_RoleLogin: { // 更新角色信息 NSString *serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]]; NSString *gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]]; NSString *serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; NSString *gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]]; NSString *gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]]; [[YYJPlatform yyj_defaultPlatform]yyj_submitRoleInfoWithServerid:serverId andServerName:serverName andCharid:gameRoleID andRoleName:gameRoleName andRolelevel:gameUserLevel]; break; } case U2S_RoleLevelUp: { // 更新角色信息 NSString *serverName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]]; NSString *gameRoleName = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]]; NSString *serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; NSString *gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]]; NSString *gameUserLevel = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]]; [[YYJPlatform yyj_defaultPlatform]yyj_submitRoleInfoWithServerid:serverId andServerName:serverName andCharid:gameRoleID andRoleName:gameRoleName andRolelevel:gameUserLevel]; break; } case U2S_FreePlatformPay: { NSString *serverId = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]]; NSString *gameRoleID = [NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]]; NSString *goodsID = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"cpInfo"]]; NSString *productName = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"title"]]; NSString *mount = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"mount"]]; NSString *orderId = [NSString stringWithFormat:@"%@", [_dict objectForKey:@"orderId"]]; NSString *_appid = sAppID; NSString *extrasParams = [NSString stringWithFormat:@"{\"appid\":\"%@\",\"cpinfo\":\"%@\",\"cporderid\":\"%@\"}", _appid, [_dict objectForKey:@"cpInfo"], [_dict objectForKey:@"orderId"] ]; [[YYJPlatform yyj_defaultPlatform] yyj_BMaiWithMoney:mount productID:goodsID productName:productName charId:gameRoleID serverId:serverId expandInfo:extrasParams cporderId:orderId]; break; } case U2S_BatteryListenStart: if(_thread == NULL) { _thread = [[NSThread alloc] initWithTarget:self selector:@selector(BatteryThread) object:nil]; [_thread setName:@"BatteryCheck"]; } if(![_thread isExecuting]) { [_thread start]; } break; case U2S_BatteryListenStop: break; } } @end extern "C" void native_opus_init(int frequency, int bitRate, int bandMode) { s_frequency = frequency; s_bandMode = bandMode; s_bitRate = bitRate; s_frameSize = frequency / 100; } extern "C" int native_opus_encode(opus_int16 *pcm, int len, unsigned char *opus) { int errorCode = 0; opus_int32 skip = 0; OpusEncoder *enc = opus_encoder_create(s_frequency, CHANNEL_NUM, OPUS_APPLICATION_VOIP, &errorCode); if (OPUS_OK != errorCode) { enc = NULL; return -1; } opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(s_bandMode)); opus_encoder_ctl(enc, OPUS_SET_BITRATE(s_bitRate)); opus_encoder_ctl(enc, OPUS_SET_VBR(1)); opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10)); opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0)); opus_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(OPUS_SIGNAL_VOICE)); opus_encoder_ctl(enc, OPUS_SET_DTX(0)); opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(0)); opus_encoder_ctl(enc, OPUS_GET_LOOKAHEAD(&skip)); opus_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(16)); unsigned char *rbytes = opus; opus_int16 *frame = pcm; int totalSize = 0; while (len >= s_frameSize) { opus_int32 length = opus_encode(enc, frame, s_frameSize, rbytes + sizeof(char), s_bitRate); rbytes[0] = length; frame += s_frameSize; rbytes += length + sizeof(char); len -= s_frameSize; totalSize += length; } opus_encoder_destroy(enc); return totalSize; } extern "C" int native_opus_decode(unsigned char *opus, int len, short *pcm) { int err = 0; //opus_int32 skip = 0; OpusDecoder *dec = opus_decoder_create(s_frequency, CHANNEL_NUM, &err); if (err != OPUS_OK) { dec = NULL; return -1; } while (len > 0) { int frame_opus_length = opus[0]; int length = opus_decode(dec, opus + sizeof(char), frame_opus_length, pcm, s_frameSize, 0); opus += sizeof(char) + frame_opus_length; pcm += s_frameSize; len = len - frame_opus_length - sizeof(char); } opus_decoder_destroy(dec); return 0; } Channel/IOS/gtios/Plugins/sanxia/GoogleService-Info.plist
New file @@ -0,0 +1,38 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CLIENT_ID</key> <string>185347479213-qlni3h746onc1ibet2otbih711iiood0.apps.googleusercontent.com</string> <key>REVERSED_CLIENT_ID</key> <string>com.googleusercontent.apps.185347479213-qlni3h746onc1ibet2otbih711iiood0</string> <key>ANDROID_CLIENT_ID</key> <string>185347479213-44kgnk8nlsaur06ng0njv2ilv5vn17au.apps.googleusercontent.com</string> <key>API_KEY</key> <string>AIzaSyBHaHdiaav0BlwqK4t2Wwsqs7OgPhBTlUk</string> <key>GCM_SENDER_ID</key> <string>185347479213</string> <key>PLIST_VERSION</key> <string>1</string> <key>BUNDLE_ID</key> <string>com.sanxiagame.zmjas</string> <key>PROJECT_ID</key> <string>sxgame-292808</string> <key>STORAGE_BUCKET</key> <string>sxgame-292808.appspot.com</string> <key>IS_ADS_ENABLED</key> <false></false> <key>IS_ANALYTICS_ENABLED</key> <false></false> <key>IS_APPINVITE_ENABLED</key> <true></true> <key>IS_GCM_ENABLED</key> <true></true> <key>IS_SIGNIN_ENABLED</key> <true></true> <key>GOOGLE_APP_ID</key> <string>1:185347479213:ios:1af294d89362bb78829824</string> <key>DATABASE_URL</key> <string>https://sxgame-292808.firebaseio.com</string> </dict> </plist> Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/Info.plistBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/Roboto-Bold.ttfBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ar.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ca.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/cs.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/da.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/de.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/el.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/en.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/en_GB.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/es.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/es_MX.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/fi.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/fr.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/google.png
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/google@2x.png
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/google@3x.png
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/gplus.png
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/gplus@2x.png
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/gplus@3x.png
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/he.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/hr.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/hu.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/id.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/it.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ja.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ko.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ms.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/nb.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/nl.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/pl.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/pt.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/pt_BR.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/pt_PT.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ro.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/ru.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/sk.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/sv.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/th.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/tr.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/uk.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/vi.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/zh_CN.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/GoogleSignIn.bundle/zh_TW.lproj/GoogleSignIn.stringsBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJAboutAccountViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJAccountViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJChangPwdViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJComRegisterViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJEditAccountViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJFindPswViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJLoginViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJMinAccountTableViewCell.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJMinAccountViewController.nib/objects-11.0+.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJMinAccountViewController.nib/runtime.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJPhoneRegisterViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJPhoneSettingPswViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJQuickRegisterViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJRealNameViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJResetPswViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJSafetySettingViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/ViewControllerNib/YYJSafetyWarmViewController.nibBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_aq_.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_aq_@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_aq_@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_back.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_back@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_back@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_back_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_back_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_back_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_close_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_close_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_close_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_close_rightbtn.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_close_rightbtn@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_close_rightbtn@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_account.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_account@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_account@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_account_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_account_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_account_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_code.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_code@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_code@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_code_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_code_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_code_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_email.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_email@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_email@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_id.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_id@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_id@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_id_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_id_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_id_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_mobile.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_mobile@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_mobile@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_mobile_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_mobile_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_mobile_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_realname.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_realname@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_realname@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_realname_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_realname_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_realname_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_secret.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_secret@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_secret@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_secret_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_secret_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_secret_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_validati.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_validati@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_validati@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_validation_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_validation_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_icon_validation_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_logo.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_check.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_check@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_check@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown_click.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_dropdown_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_hide_password.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_hide_password@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_hide_password@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_ic_add.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_ic_explain.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_ic_facebook@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_ic_facebook@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_ic_google@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_ic_google@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_phone.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_phone@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_phone@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_phone_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_phone_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_phone_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_q@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_q@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_quick.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_quick@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_quick@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_quick_press.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_quick_press@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_quick_press@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_show_password.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_show_password@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_show_password@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_si@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_si@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_ service.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_BMailog.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_bbs.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_click.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_end.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_left.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_manage.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_moreapp.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_pack.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_paylog.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_right.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_toolbaricon_rightend.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_uncheck.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_uncheck@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_uncheck@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_yk@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/cy_sdk_yk@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_account.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_account_switch.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_account_switch@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_account_switch@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_customer_service.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_fb.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_game_zone.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_gift.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_logout.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_message.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_more_game.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_news.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_passwd_change.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_passwd_change@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_passwd_change@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_safe_icon.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_safe_icon@2x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.bundle/images/yyj_sdk_float_view_safe_icon@3x.png
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.framework/Headers/YYJPlatform.h
New file @@ -0,0 +1,202 @@ // // YYJPlatform.h // // // Created by Ferryman on 16/10/9. // Copyright © 2016年 YYJia. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import "YYJPlatformDefines.h" @interface YYJPlatform : NSObject /** * @brief 获取YYJPlatform实例 */ + (YYJPlatform *)yyj_defaultPlatform; @end #pragma mark YYJPlatform 初始化配置 @interface YYJPlatform (yyj_Configuration) /** * @brief 平台初始化方法 * * @param appId 游戏在接入联运分配的appId * @param gameVersion 游戏版本号 * * */ - (void)yyj_initializeWithAppId:(NSString *)appId gameVersion:(NSString *)gameVersion appScheme:(NSString *)appScheme; /** * @brief Facebook初始化方法 */ - (void)yyj_fb_Init:(UIApplication *)application launchOptions:(NSDictionary *)launchOptions; /** * @brief GoogleSign 初始化 */ - (void)yyj_google_Init:(NSString *)clientId; /** * @brief Facebook OpenUrl方法 */ - (void)yyj_fb_openURL:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options; /** 是否开启Log输出 @param isShowLog YES 开启; NO 关闭. 默认关闭 */ - (void)yyj_isShowLog:(BOOL)isShowLog; /** 是否禁用注册功能, 禁用后点击注册, 弹出提醒框 @param isForbidRegister YES 开启; NO 关闭. 默认关闭 */ - (void)yyj_isForbidRegister:(BOOL)isForbidRegister; /** 显示悬浮框 */ - (void)yyj_showFloatWindow; /** 隐藏悬浮框 */ - (void)yyj_dismissFloatWindow; /** 显示实名认证 */ - (void)yyj_showRealNameAuthenticationController; @end #pragma mark-- 用户部分,登录、注销 @interface YYJPlatform (yyj_UserCenter) /** * @brief YYJPlatform 登录界面入口 * */ - (void)yyj_userLogin; /** * @brief YYJPlatform 注销, 即退出登录 * */ - (void)yyj_userLogout; /** * @brief 获取本次登录的token,token即sessionid */ - (NSString*)yyj_token; /** * @brief 获取登录的UID, 用于标记一个用户 */ - (NSString*)yyj_userUID; /** * @brief 当前登录用户名 */ - (NSString *)yyj_loginUserName; /** * @brief 当前gameid */ - (NSString *)yyj_gameId; /** * @brief 获取实名状态 0:未认证, 1:已认证 */ - (BOOL)yyj_realNameStatus; /** * @brief 当前登录用户的年龄 */ - (NSString *)yyj_userAge; /** * @brief 当前登录用户的身份证 */ - (NSString *)yyj_userRealName; /** * @brief 当前登录用户的身份证号码 */ - (NSString *)yyj_userRealNameID; /** * @brief 当前SDK版本 */ - (NSString *)yyj_SDKVersion; /** * @brief 登录的类型,登录有值 */ - (NSString *)yyj_loginType; /** * @brief 注册的类型,新注册值 */ - (NSString *)yyj_regType; /** 提交角色信息接口 提交的时机为: 每次登录 或者每次退出 或者是 角色等级升级的时候 三个时段都调用那是最好的 . 至少满足角色等级升级的时候调用 @param serverid 服务器编号 @param serverName 服务器名称 @param charid 角色ID @param rolename 角色名称 @param rolelevel 角色等级 (必填) */ - (void)yyj_submitRoleInfoWithServerid:(NSString *)serverid andServerName:(NSString *)serverName andCharid:(NSString *)charid andRoleName:(NSString *)rolename andRolelevel:(NSString *)rolelevel; @end #pragma mark 充值、 支付 @interface YYJPlatform (yyj_BMai) /** * @brief 充值, 该接口首先获取支付渠道,然后支付并进入web支付页面 * * @param rmb 充值金额 单位元 * @param productID iTunes 苹果后台配置的内购物品的产品ID * @param name 商品名 * @param charid 角色ID * @param serverid 服务器ID * @param info 扩展信息 * @param cporderid 游戏商订单ID * */ - (void)yyj_BMaiWithMoney:(NSString *)rmb productID:(NSString *)productID productName:(NSString *)name charId:(NSString *)charid serverId:(NSString *)serverid expandInfo:(NSString *)info cporderId:(NSString *)cporderid; /** * @brief 充值, 该接口通过角色等级, 金额等条件选择支付方式 * @param level 角色等级 * @param rmb 充值金额 单位元 * @param productID iTunes 苹果后台配置的内购物品的产品ID * @param name 商品名 * @param charid 角色ID * @param serverid 服务器ID * @param info 扩展信息 * @param cporderid 游戏商订单ID */ - (void)yyj_BMaiWithRoleLevel:(NSString *)level money:(NSString *)rmb productID:(NSString *)productID productName:(NSString *)name charId:(NSString *)charid serverId:(NSString *)serverid expandInfo:(NSString *)info cporderId:(NSString *)cporderid; @end Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.framework/Headers/YYJPlatformDefines.h
New file @@ -0,0 +1,24 @@ // // YYJPlatformDefines.h // // // Created by Ferryman on 16/9/19. // Copyright © 2016年 YYJia. All rights reserved. // #ifndef YYJPlatformDefines_h #define YYJPlatformDefines_h #import <UIKit/UIKit.h> #pragma mark - Notification ----------------------------------------------- UIKIT_EXTERN NSString* const yyj_PlatformInitDidFinishedNotification; //初始化成功 UIKIT_EXTERN NSString* const yyj_PlatformInitFinishedFailNotification; // 初始化失败 UIKIT_EXTERN NSString* const yyj_PlatformLogoutNotification; //注销 UIKIT_EXTERN NSString* const yyj_PlatformLoginNotification; //登录 UIKIT_EXTERN NSString* const yyj_PlatformBMaiSuccessfulNotification; // 支付成功 UIKIT_EXTERN NSString* const yyj_PlatformBMaiFailNotification; // 支付失败 UIKIT_EXTERN NSString* const yyj_PlatformRealNameAuthenticationCloseNotification; // 实名认证页面关闭通知 #endif /* YYJPlatformDefines_h */ Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.framework/Info.plistBinary files differ
Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.framework/Modules/module.modulemap
New file @@ -0,0 +1,6 @@ framework module YYJPlatform { umbrella header "YYJPlatform.h" export * module * { export * } } Channel/IOS/gtios/Plugins/sanxia/YYJPlatform.framework/YYJPlatformBinary files differ