From 9fdbb77fd2d766c9aa88f6753108354592770058 Mon Sep 17 00:00:00 2001
From: hank <hank.zhang@proficientcity.com>
Date: Thu, 20 Jun 2019 09:50:53 +0800
Subject: [PATCH] [Update] WAFbImpl (3.8.2)

---
 frameworks/FBSDKCoreKit.framework/Headers/FBSDKAppEvents.h |  399 +++++++++++++++++++++++++++++++-------------------------
 1 files changed, 219 insertions(+), 180 deletions(-)

diff --git a/frameworks/FBSDKCoreKit.framework/Headers/FBSDKAppEvents.h b/frameworks/FBSDKCoreKit.framework/Headers/FBSDKAppEvents.h
index 4216bfd..0eb7c0b 100644
--- a/frameworks/FBSDKCoreKit.framework/Headers/FBSDKAppEvents.h
+++ b/frameworks/FBSDKCoreKit.framework/Headers/FBSDKAppEvents.h
@@ -24,23 +24,28 @@
 
 #import <FBSDKCoreKit/FBSDKGraphRequestConnection.h>
 
+NS_ASSUME_NONNULL_BEGIN
+
 @class FBSDKAccessToken;
 @class FBSDKGraphRequest;
 
 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
 
 /**  NSNotificationCenter name indicating a result of a failed log flush attempt. The posted object will be an NSError instance. */
-FOUNDATION_EXPORT NSNotificationName const FBSDKAppEventsLoggingResultNotification;
+FOUNDATION_EXPORT NSNotificationName const FBSDKAppEventsLoggingResultNotification
+NS_SWIFT_NAME(AppEventsLoggingResult);
 
 #else
 
 /**  NSNotificationCenter name indicating a result of a failed log flush attempt. The posted object will be an NSError instance. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventsLoggingResultNotification;
+FOUNDATION_EXPORT NSString *const FBSDKAppEventsLoggingResultNotification
+NS_SWIFT_NAME(AppEventsLoggingResultNotification);
 
 #endif
 
 /**  optional plist key ("FacebookLoggingOverrideAppID") for setting `loggingOverrideAppID` */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventsOverrideAppIDBundleKey;
+FOUNDATION_EXPORT NSString *const FBSDKAppEventsOverrideAppIDBundleKey
+NS_SWIFT_NAME(AppEventsOverrideAppIDBundleKey);
 
 /**
 
@@ -59,8 +64,7 @@
    events are persisted and re-established at activation, but they will only be written with an
    explicit call to `flush`. */
   FBSDKAppEventsFlushBehaviorExplicitOnly,
-
-};
+} NS_SWIFT_NAME(AppEvents.FlushBehavior);
 
 /**
   NS_ENUM(NSUInteger, FBSDKProductAvailability)
@@ -88,7 +92,7 @@
    * Discontinued
    */
   FBSDKProductAvailabilityDiscontinued,
-};
+} NS_SWIFT_NAME(AppEvents.ProductAvailability);
 
 /**
  NS_ENUM(NSUInteger, FBSDKProductCondition)
@@ -99,83 +103,95 @@
   FBSDKProductConditionNew = 0,
   FBSDKProductConditionRefurbished,
   FBSDKProductConditionUsed,
-};
+} NS_SWIFT_NAME(AppEvents.ProductCondition);
 
 /**
  @methodgroup Predefined event names for logging events common to many apps.  Logging occurs through the `logEvent` family of methods on `FBSDKAppEvents`.
  Common event parameters are provided in the `FBSDKAppEventsParameterNames*` constants.
  */
 
+/// typedef for FBSDKAppEventName
+typedef NSString *const FBSDKAppEventName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.Name);
+
 /** Log this event when the user has achieved a level in the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAchievedLevel;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAchievedLevel;
 
 /** Log this event when the user has entered their payment info. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedPaymentInfo;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAddedPaymentInfo;
 
 /** Log this event when the user has added an item to their cart.  The valueToSum passed to logEvent should be the item's price. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedToCart;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAddedToCart;
 
 /** Log this event when the user has added an item to their wishlist.  The valueToSum passed to logEvent should be the item's price. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAddedToWishlist;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAddedToWishlist;
 
 /** Log this event when a user has completed registration with the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCompletedRegistration;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameCompletedRegistration;
 
 /** Log this event when the user has completed a tutorial in the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCompletedTutorial;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameCompletedTutorial;
 
 /** Log this event when the user has entered the checkout process.  The valueToSum passed to logEvent should be the total price in the cart. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameInitiatedCheckout;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameInitiatedCheckout;
+
+/** Log this event when the user has completed a transaction.  The valueToSum passed to logEvent should be the total price of the transaction. */
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNamePurchased;
 
 /** Log this event when the user has rated an item in the app.  The valueToSum passed to logEvent should be the numeric rating. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameRated;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameRated;
 
 /** Log this event when a user has performed a search within the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSearched;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSearched;
 
 /** Log this event when the user has spent app credits.  The valueToSum passed to logEvent should be the number of credits spent. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSpentCredits;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSpentCredits;
 
 /** Log this event when the user has unlocked an achievement in the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameUnlockedAchievement;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameUnlockedAchievement;
 
 /** Log this event when a user has viewed a form of content in the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameViewedContent;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameViewedContent;
 
 /** A telephone/SMS, email, chat or other type of contact between a customer and your business. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameContact;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameContact;
 
 /** The customization of products through a configuration tool or other application your business owns. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameCustomizeProduct;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameCustomizeProduct;
 
 /** The donation of funds to your organization or cause. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameDonate;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameDonate;
 
 /** When a person finds one of your locations via web or application, with an intention to visit (example: find product at a local store). */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameFindLocation;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameFindLocation;
 
 /** The booking of an appointment to visit one of your locations. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSchedule;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSchedule;
+
+/** The subsequent subscriptions after the start of a paid subscription for a product or service you offer. */
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSubscriptionHeartbeat;
 
 /** The start of a free trial of a product or service you offer (example: trial subscription). */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameStartTrial;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameStartTrial;
 
 /** The submission of an application for a product, service or program you offer (example: credit card, educational program or job). */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSubmitApplication;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSubmitApplication;
 
 /** The start of a paid subscription for a product or service you offer. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameSubscribe;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameSubscribe;
 
 /** Log this event when the user views an ad. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAdImpression;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAdImpression;
 
 /** Log this event when the user clicks an ad. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventNameAdClick;
+FOUNDATION_EXPORT FBSDKAppEventName FBSDKAppEventNameAdClick;
 
 /**
  @methodgroup Predefined event name parameters for common additional information to accompany events logged through the `logEvent` family
  of methods on `FBSDKAppEvents`.  Common event names are provided in the `FBAppEventName*` constants.
  */
+
+/// typedef for FBSDKAppEventParameterName
+typedef NSString *const FBSDKAppEventParameterName NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.ParameterName);
 
  /**
   * Parameter key used to specify data for the one or more pieces of content being logged about.
@@ -183,124 +199,170 @@
   * Example:
   * "[{\"id\": \"1234\", \"quantity\": 2, \"item_price\": 5.99}, {\"id\": \"5678\", \"quantity\": 1, \"item_price\": 9.99}]"
   */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContent;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameContent;
 
 /** Parameter key used to specify an ID for the specific piece of content being logged about.  Could be an EAN, article identifier, etc., depending on the nature of the app. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContentID;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameContentID;
 
 /** Parameter key used to specify a generic content type/family for the logged event, e.g. "music", "photo", "video".  Options to use will vary based upon what the app is all about. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameContentType;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameContentType;
 
 /** Parameter key used to specify currency used with logged event.  E.g. "USD", "EUR", "GBP".  See ISO-4217 for specific values.  One reference for these is <http://en.wikipedia.org/wiki/ISO_4217>. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameCurrency;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameCurrency;
 
 /** Parameter key used to specify a description appropriate to the event being logged.  E.g., the name of the achievement unlocked in the `FBAppEventNameAchievementUnlocked` event. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameDescription;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameDescription;
 
 /** Parameter key used to specify the level achieved in a `FBAppEventNameAchieved` event. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameLevel;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameLevel;
 
 /** Parameter key used to specify the maximum rating available for the `FBAppEventNameRate` event.  E.g., "5" or "10". */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameMaxRatingValue;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameMaxRatingValue;
 
 /** Parameter key used to specify how many items are being processed for an `FBAppEventNameInitiatedCheckout` or `FBAppEventNamePurchased` event. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameNumItems;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameNumItems;
 
 /** Parameter key used to specify whether payment info is available for the `FBAppEventNameInitiatedCheckout` event.  `FBSDKAppEventParameterValueYes` and `FBSDKAppEventParameterValueNo` are good canonical values to use for this parameter. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNamePaymentInfoAvailable;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNamePaymentInfoAvailable;
 
 /** Parameter key used to specify method user has used to register for the app, e.g., "Facebook", "email", "Twitter", etc */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameRegistrationMethod;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameRegistrationMethod;
 
 /** Parameter key used to specify the string provided by the user for a search operation. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameSearchString;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameSearchString;
 
 /** Parameter key used to specify whether the activity being logged about was successful or not.  `FBSDKAppEventParameterValueYes` and `FBSDKAppEventParameterValueNo` are good canonical values to use for this parameter. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameSuccess;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameSuccess;
 
 /**
  @methodgroup Predefined event name parameters for common additional information to accompany events logged through the `logProductItem` method on `FBSDKAppEvents`.
  */
 
+/// typedef for FBSDKAppEventParameterProduct
+typedef NSString *const FBSDKAppEventParameterProduct NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.ParameterProduct);
+
+/** Parameter key used to specify the product item's category. */
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCategory;
+
 /** Parameter key used to specify the product item's custom label 0. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel0;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel0;
 
 /** Parameter key used to specify the product item's custom label 1. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel1;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel1;
 
 /** Parameter key used to specify the product item's custom label 2. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel2;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel2;
 
 /** Parameter key used to specify the product item's custom label 3. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel3;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel3;
 
 /** Parameter key used to specify the product item's custom label 4. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductCustomLabel4;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductCustomLabel4;
 
 /** Parameter key used to specify the product item's AppLink app URL for iOS. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSUrl;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSUrl;
 
 /** Parameter key used to specify the product item's AppLink app ID for iOS App Store. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSAppStoreID;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSAppStoreID;
 
 /** Parameter key used to specify the product item's AppLink app name for iOS. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIOSAppName;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIOSAppName;
 
 /** Parameter key used to specify the product item's AppLink app URL for iPhone. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneUrl;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneUrl;
 
 /** Parameter key used to specify the product item's AppLink app ID for iPhone App Store. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneAppStoreID;
 
 /** Parameter key used to specify the product item's AppLink app name for iPhone. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPhoneAppName;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPhoneAppName;
 
 /** Parameter key used to specify the product item's AppLink app URL for iPad. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadUrl;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadUrl;
 
 /** Parameter key used to specify the product item's AppLink app ID for iPad App Store. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadAppStoreID;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadAppStoreID;
 
 /** Parameter key used to specify the product item's AppLink app name for iPad. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkIPadAppName;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkIPadAppName;
 
 /** Parameter key used to specify the product item's AppLink app URL for Android. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidUrl;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidUrl;
 
 /** Parameter key used to specify the product item's AppLink fully-qualified package name for intent generation. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidPackage;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidPackage;
 
 /** Parameter key used to specify the product item's AppLink app name for Android. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkAndroidAppName;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkAndroidAppName;
 
 /** Parameter key used to specify the product item's AppLink app URL for Windows Phone. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneUrl;
 
 /** Parameter key used to specify the product item's AppLink app ID, as a GUID, for App Store. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneAppID;
 
 /** Parameter key used to specify the product item's AppLink app name for Windows Phone. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName;
+FOUNDATION_EXPORT FBSDKAppEventParameterProduct FBSDKAppEventParameterProductAppLinkWindowsPhoneAppName;
 
 /*
  @methodgroup Predefined values to assign to event parameters that accompany events logged through the `logEvent` family
  of methods on `FBSDKAppEvents`.  Common event parameters are provided in the `FBSDKAppEventParameterName*` constants.
  */
 
+/// typedef for FBSDKAppEventParameterValue
+typedef NSString *const FBSDKAppEventParameterValue NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.ParameterValue);
+
 /** Yes-valued parameter value to be used with parameter keys that need a Yes/No value */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterValueYes;
+FOUNDATION_EXPORT FBSDKAppEventParameterValue FBSDKAppEventParameterValueYes;
 
 /** No-valued parameter value to be used with parameter keys that need a Yes/No value */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterValueNo;
+FOUNDATION_EXPORT FBSDKAppEventParameterValue FBSDKAppEventParameterValueNo;
 
 /** Parameter key used to specify the type of ad in an FBSDKAppEventNameAdImpression
  * or FBSDKAppEventNameAdClick event.
  * E.g. "banner", "interstitial", "rewarded_video", "native" */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameAdType;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameAdType;
 
 /** Parameter key used to specify the unique ID for all events within a subscription
  * in an FBSDKAppEventNameSubscribe or FBSDKAppEventNameStartTrial event. */
-FOUNDATION_EXPORT NSString *const FBSDKAppEventParameterNameOrderID;
+FOUNDATION_EXPORT FBSDKAppEventParameterName FBSDKAppEventParameterNameOrderID;
+
+/*
+ @methodgroup Predefined values to assign to user data store
+ */
+
+/// typedef for FBSDKAppEventUserDataType
+typedef NSString *const FBSDKAppEventUserDataType NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(AppEvents.UserDataType);
+
+/** Parameter key used to specify user's email. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventEmail;
+
+/** Parameter key used to specify user's first name. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventFirstName;
+
+/** Parameter key used to specify user's last name. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventLastName;
+
+/** Parameter key used to specify user's phone. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventPhone;
+
+/** Parameter key used to specify user's date of birth. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventDateOfBirth;
+
+/** Parameter key used to specify user's gender. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventGender;
+
+/** Parameter key used to specify user's city. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventCity;
+
+/** Parameter key used to specify user's state. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventState;
+
+/** Parameter key used to specify user's zip. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventZip;
+
+/** Parameter key used to specify user's country. */
+FOUNDATION_EXPORT FBSDKAppEventUserDataType FBSDKAppEventCountry;
 
 /**
 
@@ -351,7 +413,44 @@
  + The length of each parameter value can be no more than on the order of 100 characters.
 
  */
+
+NS_SWIFT_NAME(AppEvents)
 @interface FBSDKAppEvents : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/*
+ * Control over event batching/flushing
+ */
+
+/**
+
+ The current event flushing behavior specifying when events are sent back to Facebook servers.
+ */
+@property (class, nonatomic, assign) FBSDKAppEventsFlushBehavior flushBehavior;
+
+/**
+ Set the 'override' App ID for App Event logging.
+
+
+
+ In some cases, apps want to use one Facebook App ID for login and social presence and another
+ for App Event logging.  (An example is if multiple apps from the same company share an app ID for login, but
+ want distinct logging.)  By default, this value is `nil`, and defers to the `FBSDKAppEventsOverrideAppIDBundleKey`
+ plist value.  If that's not set, it defaults to `[FBSDKSettings appID]`.
+
+ This should be set before any other calls are made to `FBSDKAppEvents`.  Thus, you should set it in your application
+ delegate's `application:didFinishLaunchingWithOptions:` delegate.
+ */
+@property (class, nonatomic, copy, nullable) NSString *loggingOverrideAppID;
+
+/*
+ The custom user ID to associate with all app events.
+
+ The userID is persisted until it is cleared by passing nil.
+ */
+@property (class, nonatomic, copy, nullable) NSString *userID;
 
 /*
  * Basic event logging
@@ -365,7 +464,7 @@
  are given in the `FBSDKAppEvents` documentation.
 
  */
-+ (void)logEvent:(NSString *)eventName;
++ (void)logEvent:(FBSDKAppEventName)eventName;
 
 /**
 
@@ -377,7 +476,7 @@
  @param valueToSum  Amount to be aggregated into all events of this eventName, and App Insights will report
  the cumulative and average value of this amount.
  */
-+ (void)logEvent:(NSString *)eventName
++ (void)logEvent:(FBSDKAppEventName)eventName
       valueToSum:(double)valueToSum;
 
 
@@ -394,8 +493,8 @@
  parameters and name construction are given in the `FBSDKAppEvents` documentation.  Commonly used parameter names
  are provided in `FBSDKAppEventParameterName*` constants.
  */
-+ (void)logEvent:(NSString *)eventName
-      parameters:(NSDictionary *)parameters;
++ (void)logEvent:(FBSDKAppEventName)eventName
+      parameters:(NSDictionary<FBSDKAppEventParameterName, id> *)parameters;
 
 /**
 
@@ -414,9 +513,9 @@
  are provided in `FBSDKAppEventParameterName*` constants.
 
  */
-+ (void)logEvent:(NSString *)eventName
++ (void)logEvent:(FBSDKAppEventName)eventName
       valueToSum:(double)valueToSum
-      parameters:(NSDictionary *)parameters;
+      parameters:(NSDictionary<FBSDKAppEventParameterName, id> *)parameters;
 
 
 /**
@@ -439,10 +538,10 @@
 
  @param accessToken  The optional access token to log the event as.
  */
-+ (void)logEvent:(NSString *)eventName
-      valueToSum:(NSNumber *)valueToSum
-      parameters:(NSDictionary *)parameters
-     accessToken:(FBSDKAccessToken *)accessToken;
++ (void)logEvent:(FBSDKAppEventName)eventName
+      valueToSum:(nullable NSNumber *)valueToSum
+      parameters:(NSDictionary<FBSDKAppEventParameterName, id> *)parameters
+     accessToken:(nullable FBSDKAccessToken *)accessToken;
 
 /*
  * Purchase logging
@@ -489,7 +588,7 @@
  */
 + (void)logPurchase:(double)purchaseAmount
            currency:(NSString *)currency
-         parameters:(NSDictionary *)parameters;
+         parameters:(NSDictionary<NSString *, id> *)parameters;
 
 /**
 
@@ -516,8 +615,8 @@
  */
 + (void)logPurchase:(double)purchaseAmount
            currency:(NSString *)currency
-         parameters:(NSDictionary *)parameters
-        accessToken:(FBSDKAccessToken *)accessToken;
+         parameters:(NSDictionary<NSString *, id> *)parameters
+        accessToken:(nullable FBSDKAccessToken *)accessToken;
 
 
 /*
@@ -574,10 +673,10 @@
                  title:(NSString *)title
            priceAmount:(double)priceAmount
               currency:(NSString *)currency
-                  gtin:(NSString *)gtin
-                   mpn:(NSString *)mpn
-                 brand:(NSString *)brand
-            parameters:(NSDictionary *)parameters;
+                  gtin:(nullable NSString *)gtin
+                   mpn:(nullable NSString *)mpn
+                 brand:(nullable NSString *)brand
+            parameters:(nullable NSDictionary<NSString *, id> *)parameters;
 
 /**
 
@@ -624,52 +723,8 @@
 
  @param deviceTokenString Device token string.
  */
-+ (void)setPushNotificationsDeviceTokenString:(NSString *)deviceTokenString;
-
-/*
- * Control over event batching/flushing
- */
-
-/**
-
-  Get the current event flushing behavior specifying when events are sent back to Facebook servers.
- */
-+ (FBSDKAppEventsFlushBehavior)flushBehavior;
-
-/**
-
-  Set the current event flushing behavior specifying when events are sent back to Facebook servers.
-
- @param flushBehavior   The desired `FBSDKAppEventsFlushBehavior` to be used.
- */
-+ (void)setFlushBehavior:(FBSDKAppEventsFlushBehavior)flushBehavior;
-
-/**
-  Set the 'override' App ID for App Event logging.
-
-
-
- In some cases, apps want to use one Facebook App ID for login and social presence and another
- for App Event logging.  (An example is if multiple apps from the same company share an app ID for login, but
- want distinct logging.)  By default, this value is `nil`, and defers to the `FBSDKAppEventsOverrideAppIDBundleKey`
- plist value.  If that's not set, it defaults to `[FBSDKSettings appID]`.
-
- This should be set before any other calls are made to `FBSDKAppEvents`.  Thus, you should set it in your application
- delegate's `application:didFinishLaunchingWithOptions:` delegate.
-
- @param appID The Facebook App ID to be used for App Event logging.
- */
-+ (void)setLoggingOverrideAppID:(NSString *)appID;
-
-/**
-  Get the 'override' App ID for App Event logging.
-
-
-@see setLoggingOverrideAppID:
-
- */
-+ (NSString *)loggingOverrideAppID;
-
++ (void)setPushNotificationsDeviceTokenString:(NSString *)deviceTokenString
+NS_SWIFT_NAME(setPushNotificationsDeviceToken(_:));
 
 /**
   Explicitly kick off flushing of events to Facebook.  This is an asynchronous method, but it does initiate an immediate
@@ -681,11 +736,6 @@
   Creates a request representing the Graph API call to retrieve a Custom Audience "third party ID" for the app's Facebook user.
  Callers will send this ID back to their own servers, collect up a set to create a Facebook Custom Audience with,
  and then use the resultant Custom Audience to target ads.
-
- @param accessToken The access token to use to establish the user's identity for users logged into Facebook through this app.
- If `nil`, then the `[FBSDKAccessToken currentAccessToken]` is used.
-
-
 
  The JSON in the request's response will include an "custom_audience_third_party_id" key/value pair, with the value being the ID retrieved.
  This ID is an encrypted encoding of the Facebook user's ID and the invoking Facebook app ID.
@@ -699,48 +749,16 @@
 
  This method returns `nil` if either the user has opted-out (via iOS) from Ad Tracking, the app itself has limited event usage
  via the `[FBSDKSettings limitEventAndDataUsage]` flag, or a specific Facebook user cannot be identified.
- */
-+ (FBSDKGraphRequest *)requestForCustomAudienceThirdPartyIDWithAccessToken:(FBSDKAccessToken *)accessToken;
 
-/*
-  Sets a custom user ID to associate with all app events.
-
- The userID is persisted until it is cleared by passing nil.
+ @param accessToken The access token to use to establish the user's identity for users logged into Facebook through this app.
+ If `nil`, then the `[FBSDKAccessToken currentAccessToken]` is used.
  */
-+ (void)setUserID:(NSString *)userID;
++ (nullable FBSDKGraphRequest *)requestForCustomAudienceThirdPartyIDWithAccessToken:(nullable FBSDKAccessToken *)accessToken;
 
 /*
  Clears the custom user ID to associate with all app events.
  */
 + (void)clearUserID;
-
-/*
-  Returns the set custom user ID.
- */
-+ (NSString *)userID;
-
-/*
-  Sets custom user data to associate with all app events. All user data are hashed
-  and used to match Facebook user from this instance of an application.
-
-  The user data will be persisted between application instances.
-
-  @param userData user data to identify the user. User data should be formated as
-  a NSDictionary of data type name and value.
-  Supported data types and names are:
-                   Email: em
-                   First Name: fn
-                   Last Name: ln
-                   Phone: ph
-                   Date of Birth: db
-                   Gender: ge
-                   City: ct
-                   State: st
-                   Zip: zp
-                   Country: country
- */
-+ (void)setUserData:(NSDictionary *)userData
-  DEPRECATED_MSG_ATTRIBUTE("Renamed `setUserEmail:firstName: ...`");
 
 /*
   Sets custom user data to associate with all app events. All user data are hashed
@@ -759,25 +777,44 @@
  @param zip user's zip
  @param country user's country
  */
-+ (void)setUserEmail:(NSString *)email
-           firstName:(NSString *)firstName
-            lastName:(NSString *)lastName
-               phone:(NSString *)phone
-         dateOfBirth:(NSString *)dateOfBirth
-              gender:(NSString *)gender
-                city:(NSString *)city
-               state:(NSString *)state
-                 zip:(NSString *)zip
-             country:(NSString *)country;
++ (void)setUserEmail:(nullable NSString *)email
+           firstName:(nullable NSString *)firstName
+            lastName:(nullable NSString *)lastName
+               phone:(nullable NSString *)phone
+         dateOfBirth:(nullable NSString *)dateOfBirth
+              gender:(nullable NSString *)gender
+                city:(nullable NSString *)city
+               state:(nullable NSString *)state
+                 zip:(nullable NSString *)zip
+             country:(nullable NSString *)country
+NS_SWIFT_NAME(setUser(email:firstName:lastName:phone:dateOfBirth:gender:city:state:zip:country:));
+
 /*
   Returns the set user data else nil
 */
-+ (NSString *)getUserData;
++ (nullable NSString *)getUserData;
 
 /*
   Clears the current user data
 */
 + (void)clearUserData;
+
+/*
+ Sets custom user data to associate with all app events. All user data are hashed
+ and used to match Facebook user from this instance of an application.
+
+ The user data will be persisted between application instances.
+
+ @param data  data
+ @param type  data type, e.g. FBSDKAppEventEmail, FBSDKAppEventPhone
+ */
++ (void)setUserData:(nullable NSString *)data
+            forType:(FBSDKAppEventUserDataType)type;
+
+/*
+ Clears the current user data of certain type
+ */
++ (void)clearUserDataForType:(FBSDKAppEventUserDataType)type;
 
 /*
   Sends a request to update the properties for the current user, set by `setUserID:`
@@ -786,7 +823,7 @@
  @param properties the custom user properties
  @param handler the optional completion handler
  */
-+ (void)updateUserProperties:(NSDictionary *)properties handler:(FBSDKGraphRequestHandler)handler;
++ (void)updateUserProperties:(NSDictionary<NSString *, id> *)properties handler:(nullable FBSDKGraphRequestBlock)handler;
 
 #if !TARGET_OS_TV
 /*
@@ -820,3 +857,5 @@
 + (void)sendEventBindingsToUnity;
 
 @end
+
+NS_ASSUME_NONNULL_END

--
Gitblit v1.8.0