Facebook.Unity.IOS/IOSWrapper.cs (467 lines of code) (raw):
/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
* copy, modify, and distribute this software in source code or binary form for use
* in connection with the web services and APIs provided by Facebook.
*
* As with any software that integrates with the Facebook platform, your use of
* this software is subject to the Facebook Developer Principles and Policies
* [http://developers.facebook.com/policy/]. This copyright notice shall be
* included in all copies or substantial portions of the software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
namespace Facebook.Unity.IOS
{
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Facebook.Unity.Mobile.IOS;
internal class IOSWrapper : IIOSWrapper
{
public void Init(
string appId,
bool frictionlessRequests,
string urlSuffix,
string unityUserAgentSuffix)
{
IOSWrapper.IOSFBInit(
appId,
frictionlessRequests,
urlSuffix,
unityUserAgentSuffix);
}
public void EnableProfileUpdatesOnAccessTokenChange(bool enable)
{
IOSWrapper.IOSFBEnableProfileUpdatesOnAccessTokenChange(enable);
}
public void LoginWithTrackingPreference(
int requestId,
string scope,
string tracking,
string nonce)
{
IOSWrapper.IOSFBLoginWithTrackingPreference(requestId, scope, tracking, nonce);
}
public void LogInWithReadPermissions(
int requestId,
string scope)
{
IOSWrapper.IOSFBLogInWithReadPermissions(
requestId,
scope);
}
public void LogInWithPublishPermissions(
int requestId,
string scope)
{
IOSWrapper.IOSFBLogInWithPublishPermissions(
requestId,
scope);
}
public void LogOut()
{
IOSWrapper.IOSFBLogOut();
}
public void SetPushNotificationsDeviceTokenString(string token)
{
IOSWrapper.IOSFBSetPushNotificationsDeviceTokenString(token);
}
public void SetShareDialogMode(int mode)
{
IOSWrapper.IOSFBSetShareDialogMode(mode);
}
public void ShareLink(
int requestId,
string contentURL,
string contentTitle,
string contentDescription,
string photoURL)
{
IOSWrapper.IOSFBShareLink(
requestId,
contentURL,
contentTitle,
contentDescription,
photoURL);
}
public void FeedShare(
int requestId,
string toId,
string link,
string linkName,
string linkCaption,
string linkDescription,
string picture,
string mediaSource)
{
IOSWrapper.IOSFBFeedShare(
requestId,
toId,
link,
linkName,
linkCaption,
linkDescription,
picture,
mediaSource);
}
public void AppRequest(
int requestId,
string message,
string actionType,
string objectId,
string[] to = null,
int toLength = 0,
string filters = "",
string[] excludeIds = null,
int excludeIdsLength = 0,
bool hasMaxRecipients = false,
int maxRecipients = 0,
string data = "",
string title = "")
{
IOSWrapper.IOSFBAppRequest(
requestId,
message,
actionType,
objectId,
to,
toLength,
filters,
excludeIds,
excludeIdsLength,
hasMaxRecipients,
maxRecipients,
data,
title);
}
public void OpenFriendFinderDialog(
int requestId)
{
IOSWrapper.IOSFBOpenGamingServicesFriendFinder(requestId);
}
public void FBAppEventsActivateApp()
{
IOSWrapper.IOSFBAppEventsActivateApp();
}
public void CreateGamingContext(int requestId, string playerID)
{
IOSWrapper.IOSFBCreateGamingContext(requestId, playerID);
}
public void SwitchGamingContext(int requestId, string gamingContextID)
{
IOSWrapper.IOSFBSwitchGamingContext(requestId, gamingContextID);
}
public void ChooseGamingContext(
int requestId,
string filter,
int minSize,
int maxSize)
{
IOSWrapper.IOSFBChooseGamingContext(requestId, filter, minSize, maxSize);
}
public void GetCurrentGamingContext(int requestId)
{
IOSWrapper.IOSFBGetCurrentGamingContext(requestId);
}
public void LogAppEvent(
string logEvent,
double valueToSum,
int numParams,
string[] paramKeys,
string[] paramVals)
{
IOSWrapper.IOSFBAppEventsLogEvent(
logEvent,
valueToSum,
numParams,
paramKeys,
paramVals);
}
public void LogPurchaseAppEvent(
double logPurchase,
string currency,
int numParams,
string[] paramKeys,
string[] paramVals)
{
IOSWrapper.IOSFBAppEventsLogPurchase(
logPurchase,
currency,
numParams,
paramKeys,
paramVals);
}
public void FBAppEventsSetLimitEventUsage(bool limitEventUsage)
{
IOSWrapper.IOSFBAppEventsSetLimitEventUsage(limitEventUsage);
}
public void FBAutoLogAppEventsEnabled(bool autoLogAppEventsEnabled)
{
IOSWrapper.IOSFBAutoLogAppEventsEnabled(autoLogAppEventsEnabled);
}
public void FBAdvertiserIDCollectionEnabled(bool advertiserIDCollectionEnabled)
{
IOSWrapper.IOSFBAdvertiserIDCollectionEnabled(advertiserIDCollectionEnabled);
}
public bool FBAdvertiserTrackingEnabled(bool advertiserTrackingEnabled)
{
return IOSWrapper.IOSFBAdvertiserTrackingEnabled(advertiserTrackingEnabled);
}
public void GetAppLink(int requestId)
{
IOSWrapper.IOSFBGetAppLink(requestId);
}
public string FBSdkVersion()
{
return IOSWrapper.IOSFBSdkVersion();
}
public void FBSetUserID(string userID)
{
IOSWrapper.IOSFBSetUserID(userID);
}
public string FBGetUserID()
{
return IOSWrapper.IOSFBGetUserID();
}
public void SetDataProcessingOptions(string[] options, int country, int state)
{
IOSWrapper.IOSFBSetDataProcessingOptions(options, options.Length, country, state);
}
public AuthenticationToken CurrentAuthenticationToken()
{
String authenticationTokenString = IOSWrapper.IOSFBCurrentAuthenticationToken();
if (String.IsNullOrEmpty(authenticationTokenString))
{
return null;
}
try
{
IDictionary<string, string> token = Utilities.ParseStringDictionaryFromString(authenticationTokenString);
string tokenString;
string nonce;
token.TryGetValue("auth_token_string", out tokenString);
token.TryGetValue("auth_nonce", out nonce);
return new AuthenticationToken(tokenString, nonce);
}
catch (Exception)
{
return null;
}
}
public Profile CurrentProfile()
{
String profileString = IOSWrapper.IOSFBCurrentProfile();
if (String.IsNullOrEmpty(profileString))
{
return null;
}
try
{
IDictionary<string, string> profile = Utilities.ParseStringDictionaryFromString(profileString);
string userID;
string firstName;
string middleName;
string lastName;
string name;
string email;
string imageURL;
string linkURL;
string friendIDs;
string birthday;
string gender;
profile.TryGetValue("userID", out userID);
profile.TryGetValue("firstName", out firstName);
profile.TryGetValue("middleName", out middleName);
profile.TryGetValue("lastName", out lastName);
profile.TryGetValue("name", out name);
profile.TryGetValue("email", out email);
profile.TryGetValue("imageURL", out imageURL);
profile.TryGetValue("linkURL", out linkURL);
profile.TryGetValue("friendIDs", out friendIDs);
profile.TryGetValue("birthday", out birthday);
profile.TryGetValue("gender", out gender);
UserAgeRange ageRange = UserAgeRange.AgeRangeFromDictionary(profile);
FBLocation hometown = FBLocation.FromDictionary("hometown", profile);
FBLocation location = FBLocation.FromDictionary("location", profile);
return new Profile(
userID,
firstName,
middleName,
lastName,
name,
email,
imageURL,
linkURL,
friendIDs?.Split(','),
birthday,
ageRange,
hometown,
location,
gender);
}
catch (Exception)
{
return null;
}
}
public void UploadImageToMediaLibrary(
int requestId,
string caption,
string imageUri,
bool shouldLaunchMediaDialog)
{
IOSWrapper.IOSFBUploadImageToMediaLibrary(
requestId,
caption,
imageUri,
shouldLaunchMediaDialog);
}
public void UploadVideoToMediaLibrary(
int requestId,
string caption,
string videoUri)
{
IOSWrapper.IOSFBUploadVideoToMediaLibrary(
requestId,
caption,
videoUri);
}
public void FetchDeferredAppLink(int requestId)
{
IOSWrapper.IOSFBFetchDeferredAppLink(requestId);
}
public void RefreshCurrentAccessToken(int requestId)
{
IOSWrapper.IOSFBRefreshCurrentAccessToken(requestId);
}
[DllImport("__Internal")]
private static extern void IOSFBInit(
string appId,
bool frictionlessRequests,
string urlSuffix,
string unityUserAgentSuffix);
[DllImport("__Internal")]
private static extern void IOSFBEnableProfileUpdatesOnAccessTokenChange(bool enable);
[DllImport("__Internal")]
private static extern void IOSFBLogInWithReadPermissions(
int requestId,
string scope);
[DllImport("__Internal")]
private static extern void IOSFBLoginWithTrackingPreference(
int requestId,
string scope,
string tracking,
string nonce);
[DllImport("__Internal")]
private static extern void IOSFBLogInWithPublishPermissions(
int requestId,
string scope);
[DllImport("__Internal")]
private static extern void IOSFBLogOut();
[DllImport("__Internal")]
private static extern void IOSFBSetPushNotificationsDeviceTokenString(string token);
[DllImport("__Internal")]
private static extern void IOSFBSetShareDialogMode(int mode);
[DllImport("__Internal")]
private static extern void IOSFBShareLink(
int requestId,
string contentURL,
string contentTitle,
string contentDescription,
string photoURL);
[DllImport("__Internal")]
private static extern void IOSFBFeedShare(
int requestId,
string toId,
string link,
string linkName,
string linkCaption,
string linkDescription,
string picture,
string mediaSource);
[DllImport("__Internal")]
private static extern void IOSFBAppRequest(
int requestId,
string message,
string actionType,
string objectId,
string[] to = null,
int toLength = 0,
string filters = "",
string[] excludeIds = null,
int excludeIdsLength = 0,
bool hasMaxRecipients = false,
int maxRecipients = 0,
string data = "",
string title = "");
[DllImport("__Internal")]
private static extern void IOSFBAppEventsActivateApp();
[DllImport("__Internal")]
private static extern void IOSFBAppEventsLogEvent(
string logEvent,
double valueToSum,
int numParams,
string[] paramKeys,
string[] paramVals);
[DllImport("__Internal")]
private static extern void IOSFBAppEventsLogPurchase(
double logPurchase,
string currency,
int numParams,
string[] paramKeys,
string[] paramVals);
[DllImport("__Internal")]
private static extern void IOSFBAppEventsSetLimitEventUsage(bool limitEventUsage);
[DllImport("__Internal")]
private static extern void IOSFBAutoLogAppEventsEnabled(bool autoLogAppEventsEnabled);
[DllImport("__Internal")]
private static extern void IOSFBAdvertiserIDCollectionEnabled(bool advertiserIDCollectionEnabledID);
[DllImport("__Internal")]
private static extern bool IOSFBAdvertiserTrackingEnabled(bool advertiserTrackingEnabled);
[DllImport("__Internal")]
private static extern void IOSFBGetAppLink(int requestID);
[DllImport("__Internal")]
private static extern string IOSFBSdkVersion();
[DllImport("__Internal")]
private static extern void IOSFBFetchDeferredAppLink(int requestID);
[DllImport("__Internal")]
private static extern void IOSFBRefreshCurrentAccessToken(int requestID);
[DllImport("__Internal")]
private static extern void IOSFBSetUserID(string userID);
[DllImport("__Internal")]
private static extern void IOSFBOpenGamingServicesFriendFinder(int requestID);
[DllImport("__Internal")]
private static extern void IOSFBUploadImageToMediaLibrary(
int requestID,
string caption,
string imageUri,
bool shouldLaunchMediaDialog);
[DllImport("__Internal")]
private static extern void IOSFBUploadVideoToMediaLibrary(
int requestID,
string caption,
string videoUri);
[DllImport("__Internal")]
private static extern void IOSFBCreateGamingContext(
int requestID,
string playerID);
[DllImport("__Internal")]
private static extern void IOSFBSwitchGamingContext(
int requestID,
string contextID);
[DllImport("__Internal")]
private static extern void IOSFBChooseGamingContext(
int requestID,
string filter,
int minSize,
int maxSize);
[DllImport("__Internal")]
private static extern void IOSFBGetCurrentGamingContext(
int requestID);
[DllImport("__Internal")]
private static extern string IOSFBGetUserID();
[DllImport("__Internal")]
private static extern void IOSFBSetDataProcessingOptions(
string[] options,
int numOptions,
int country,
int state);
[DllImport("__Internal")]
private static extern void IOSFBUpdateUserProperties(
int numParams,
string[] paramKeys,
string[] paramVals);
[DllImport("__Internal")]
private static extern string IOSFBCurrentAuthenticationToken();
[DllImport("__Internal")]
private static extern string IOSFBCurrentProfile();
}
}