├── README.md
├── lib
└── Android
│ ├── bolts-tasks-1.4.0.jar
│ ├── bolts-android-1.1.2.jar
│ ├── bolts-android-1.4.0.jar
│ ├── bolts-applinks-1.4.0.jar
│ └── res
│ └── values
│ ├── FacebookAppID.xml
│ └── values.xml
├── ThirdParty
└── repository
│ └── com
│ └── facebook
│ └── Facebook
│ ├── 4.10.1
│ ├── Facebook-4.10.1.aar
│ └── Facebook-4.10.1.pom
│ ├── 4.16.1
│ ├── Facebook-4.16.1.aar
│ └── Facebook-4.16.1.pom
│ └── 4.18.0
│ ├── Facebook-4.18.0.aar
│ └── Facebook-4.18.0.pom
├── Source
└── FacebookSDK
│ ├── Private
│ ├── FacebookSDKSettings.cpp
│ ├── FacebookSDKPrivatePCH.h
│ ├── FacebookSDK.cpp
│ ├── FacebookSDKComponent.cpp
│ └── FacebookSDKFunctions.cpp
│ ├── Classes
│ ├── FacebookSDKSettings.h
│ ├── FacebookSDKFunctions.h
│ └── FacebookSDKComponent.h
│ ├── Public
│ └── IFacebookSDK.h
│ ├── FacebookSDK.Build.cs
│ └── FacebookSDK_APL.xml
├── .gitattributes
├── FacebookSDK.uplugin
├── .gitignore
└── LICENSE
/README.md:
--------------------------------------------------------------------------------
1 | # Facebook
2 | A plugin for Unreal Engine 4 that integrates the Facebook SDK.
3 |
--------------------------------------------------------------------------------
/lib/Android/bolts-tasks-1.4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/lib/Android/bolts-tasks-1.4.0.jar
--------------------------------------------------------------------------------
/lib/Android/bolts-android-1.1.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/lib/Android/bolts-android-1.1.2.jar
--------------------------------------------------------------------------------
/lib/Android/bolts-android-1.4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/lib/Android/bolts-android-1.4.0.jar
--------------------------------------------------------------------------------
/lib/Android/bolts-applinks-1.4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/lib/Android/bolts-applinks-1.4.0.jar
--------------------------------------------------------------------------------
/ThirdParty/repository/com/facebook/Facebook/4.10.1/Facebook-4.10.1.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/ThirdParty/repository/com/facebook/Facebook/4.10.1/Facebook-4.10.1.aar
--------------------------------------------------------------------------------
/ThirdParty/repository/com/facebook/Facebook/4.16.1/Facebook-4.16.1.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/ThirdParty/repository/com/facebook/Facebook/4.16.1/Facebook-4.16.1.aar
--------------------------------------------------------------------------------
/ThirdParty/repository/com/facebook/Facebook/4.18.0/Facebook-4.18.0.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PandoraEntertainment/Facebook/HEAD/ThirdParty/repository/com/facebook/Facebook/4.18.0/Facebook-4.18.0.aar
--------------------------------------------------------------------------------
/lib/Android/res/values/FacebookAppID.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 228149914278307
4 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Private/FacebookSDKSettings.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include "FacebookSDKPrivatePCH.h"
3 | #include "FacebookSDKSettings.h"
4 |
5 | UFacebookSDKSettings::UFacebookSDKSettings(const FObjectInitializer& ObjectInitializer)
6 | : Super(ObjectInitializer)
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/ThirdParty/repository/com/facebook/Facebook/4.18.0/Facebook-4.18.0.pom:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 | com.facebook
4 | Facebook
5 | 4.18.0
6 | aar
7 |
8 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Classes/FacebookSDKSettings.h:
--------------------------------------------------------------------------------
1 |
2 | #pragma once
3 |
4 | #include "FacebookSDKSettings.generated.h"
5 |
6 | UCLASS(config = Engine, defaultconfig)
7 | class UFacebookSDKSettings : public UObject
8 | {
9 | GENERATED_BODY()
10 |
11 | public:
12 | UFacebookSDKSettings(const FObjectInitializer& ObjectInitializer);
13 |
14 | // SDK Ids
15 |
16 | UPROPERTY(Config, EditAnywhere, Category = Parse, meta = (DisplayName = "App ID"))
17 | FString FBID;
18 |
19 |
20 | };
21 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Private/FacebookSDKPrivatePCH.h:
--------------------------------------------------------------------------------
1 |
2 | #pragma once
3 |
4 | #include "CoreUObject.h"
5 | #include "Engine.h"
6 |
7 | #if PLATFORM_IOS
8 |
9 | #endif
10 |
11 | #include "IFacebookSDK.h"
12 |
13 | #include "FacebookSDKClasses.h"
14 |
15 | // You should place include statements to your module's private header files here. You only need to
16 | // add includes for headers that are used in most of your module's source files though.
17 |
18 | DECLARE_LOG_CATEGORY_EXTERN(LogFacebookSDK, Log, All);
19 |
--------------------------------------------------------------------------------
/FacebookSDK.uplugin:
--------------------------------------------------------------------------------
1 | {
2 | "FileVersion": 1,
3 | "Version": 1,
4 | "VersionName": "1.0",
5 | "FriendlyName": "FacebookSDK",
6 | "Description": "This plugin enables Login, App Invite, and Sharing Photo, functionality for Facebook Platform.",
7 | "Category": "Advertising",
8 | "CreatedBy": "Pandora Entertainment Ltd.",
9 | "CreatedByURL": "www.pandoraentertainment.co.uk",
10 | "DocsURL": "",
11 | "MarketplaceURL": "",
12 | "Modules": [
13 | {
14 | "Name": "FacebookSDK",
15 | "Type": "Runtime",
16 | "LoadingPhase": "Default"
17 | }
18 | ],
19 | "EnabledByDefault": false,
20 | "CanContainContent": false,
21 | "IsBetaVersion": false,
22 | "Installed": false
23 | }
--------------------------------------------------------------------------------
/ThirdParty/repository/com/facebook/Facebook/4.10.1/Facebook-4.10.1.pom:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 | com.facebook
4 | Facebook
5 | 4.10.1
6 | aar
7 |
8 |
9 | com.android.support
10 | cardview-v7
11 | 23.0.0
12 | compile
13 | aar
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear in the root of a volume
35 | .DocumentRevisions-V100
36 | .fseventsd
37 | .Spotlight-V100
38 | .TemporaryItems
39 | .Trashes
40 | .VolumeIcon.icns
41 |
42 | # Directories potentially created on remote AFP share
43 | .AppleDB
44 | .AppleDesktop
45 | Network Trash Folder
46 | Temporary Items
47 | .apdisk
48 |
--------------------------------------------------------------------------------
/ThirdParty/repository/com/facebook/Facebook/4.16.1/Facebook-4.16.1.pom:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 | com.facebook
4 | Facebook
5 | 4.16.1
6 | aar
7 |
8 |
9 | com.android.support
10 | support-vector-drawable
11 | 24.1.1
12 | compile
13 | aar
14 |
15 |
16 |
17 |
18 | com.android.support
19 | appcompat-v7
20 | 24.1.1
21 | compile
22 | aar
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Public/IFacebookSDK.h:
--------------------------------------------------------------------------------
1 |
2 | #pragma once
3 |
4 | #include "ModuleManager.h"
5 |
6 |
7 | /**
8 | * The public interface to this module. In most cases, this interface is only public to sibling modules
9 | * within this plugin.
10 | */
11 | class IFacebookSDK : public IModuleInterface
12 | {
13 |
14 | public:
15 |
16 | /**
17 | * Singleton-like access to this module's interface. This is just for convenience!
18 | * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already.
19 | *
20 | * @return Returns singleton instance, loading the module on demand if needed
21 | */
22 | static inline IFacebookSDK& Get()
23 | {
24 | return FModuleManager::LoadModuleChecked< IFacebookSDK >( "FacebookSDK" );
25 | }
26 |
27 | /**
28 | * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true.
29 | *
30 | * @return True if the module is loaded and ready to use
31 | */
32 | static inline bool IsAvailable()
33 | {
34 | return FModuleManager::Get().IsModuleLoaded( "FacebookSDK" );
35 | }
36 | };
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Pandora Entertainment
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Classes/FacebookSDKFunctions.h:
--------------------------------------------------------------------------------
1 |
2 | #pragma once
3 |
4 | #include "FacebookSDKFunctions.generated.h"
5 |
6 |
7 |
8 | UCLASS(NotBlueprintable)
9 | class UFacebookSDKFunctions : public UObject {
10 | GENERATED_BODY()
11 |
12 | public:
13 |
14 | #if PLATFORM_ANDROID
15 | static void InitJavaFunctions();
16 | #endif
17 |
18 | UFUNCTION(BlueprintCallable, meta = (Keywords = "FacebookSDK "), Category = "FacebookSDK|")
19 | static void FacebookSDK_Login();
20 |
21 | UFUNCTION(BlueprintCallable, meta = (Keywords = "FacebookSDK "), Category = "FacebookSDK|")
22 | static void FacebookSDK_Logout();
23 |
24 | UFUNCTION(BlueprintCallable, meta = (Keywords = "FacebookSDK "), Category = "FacebookSDK|")
25 | static void FacebookSDK_AppInvite();
26 |
27 | UFUNCTION(BlueprintCallable, meta = (Keywords = "FacebookSDK "), Category = "FacebookSDK|")
28 | static void FacebookSDK_SharePhoto(FString AppName, FString Filename);
29 |
30 | UFUNCTION(BlueprintCallable, meta = (Keywords = "FacebookSDK "), Category = "FacebookSDK|")
31 | static FString FacebookGetAccessToken();
32 |
33 | UFUNCTION(BlueprintPure, meta = (Keywords = "FacebookSDK "), Category = "FacebookSDK|")
34 | static bool FacebookIsLoggedIn();
35 |
36 |
37 | };
38 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Private/FacebookSDK.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include "FacebookSDKPrivatePCH.h"
3 | #include "FacebookSDKSettings.h"
4 | #include "ISettingsModule.h"
5 |
6 | DEFINE_LOG_CATEGORY(LogFacebookSDK);
7 |
8 | #define LOCTEXT_NAMESPACE "FacebookSDK"
9 |
10 | class FFacebookSDK : public IFacebookSDK
11 | {
12 | virtual void StartupModule() override;
13 | virtual void ShutdownModule() override;
14 | };
15 |
16 | IMPLEMENT_MODULE( FFacebookSDK, FacebookSDK )
17 |
18 | void FFacebookSDK::StartupModule()
19 | {
20 | // register settings
21 | if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr("Settings"))
22 | {
23 | SettingsModule->RegisterSettings("Project", "Plugins", "FacebookSDK",
24 | LOCTEXT("RuntimeSettingsName", "FacebookSDK"),
25 | LOCTEXT("RuntimeSettingsDescription", "Configure the FacebookSDK plugin"),
26 | GetMutableDefault()
27 | );
28 | }
29 |
30 | #if PLATFORM_ANDROID
31 | UFacebookSDKFunctions::InitJavaFunctions();
32 | #endif
33 | }
34 |
35 |
36 | void FFacebookSDK::ShutdownModule()
37 | {
38 | // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,
39 | // we call this function before unloading the module.
40 | }
41 |
42 | #undef LOCTEXT_NAMESPACE
43 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Private/FacebookSDKComponent.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include "FacebookSDKPrivatePCH.h"
3 |
4 | void UFacebookSDKComponent::OnRegister()
5 | {
6 | Super::OnRegister();
7 |
8 |
9 | UFacebookSDKComponent::onFacebookLoginCompletedDelegate.AddUObject(this, &UFacebookSDKComponent::onFacebookLoginCompleted_Handler);
10 |
11 | UFacebookSDKComponent::onFacebookLoginCancelledDelegate.AddUObject(this, &UFacebookSDKComponent::onFacebookLoginCancelled_Handler);
12 |
13 | UFacebookSDKComponent::onFacebookLoginErrorDelegate.AddUObject(this, &UFacebookSDKComponent::onFacebookLoginError_Handler);
14 |
15 | }
16 |
17 | void UFacebookSDKComponent::OnUnregister()
18 | {
19 | Super::OnUnregister();
20 |
21 |
22 | UFacebookSDKComponent::onFacebookLoginCompletedDelegate.RemoveAll(this);
23 |
24 | UFacebookSDKComponent::onFacebookLoginCancelledDelegate.RemoveAll(this);
25 |
26 | UFacebookSDKComponent::onFacebookLoginErrorDelegate.RemoveAll(this);
27 | }
28 |
29 | UFacebookSDKComponent::FFacebookSDKonFacebookLoginCompletedDelegate UFacebookSDKComponent::onFacebookLoginCompletedDelegate;
30 |
31 | UFacebookSDKComponent::FFacebookSDKonFacebookLoginCancelledDelegate UFacebookSDKComponent::onFacebookLoginCancelledDelegate;
32 |
33 | UFacebookSDKComponent::FFacebookSDKonFacebookLoginErrorDelegate UFacebookSDKComponent::onFacebookLoginErrorDelegate;
34 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/FacebookSDK.Build.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System.IO;
4 |
5 | namespace UnrealBuildTool.Rules
6 | {
7 | public class FacebookSDK : ModuleRules
8 | {
9 | public FacebookSDK(TargetInfo Target)
10 | {
11 | PublicIncludePaths.AddRange(
12 | new string[] {
13 | // ... add public include paths required here ...
14 | }
15 | );
16 |
17 | PrivateIncludePaths.AddRange(
18 | new string[] {
19 | "Developer/FacebookSDK/Private",
20 | // ... add other private include paths required here ...
21 | }
22 | );
23 |
24 | PublicDependencyModuleNames.AddRange(
25 | new string[]
26 | {
27 | "Core",
28 | "CoreUObject",
29 | "Engine"
30 | // ... add other public dependencies that you statically link with here ...
31 | }
32 | );
33 |
34 | PrivateDependencyModuleNames.AddRange(
35 | new string[]
36 | {
37 | // ... add private dependencies that you statically link with here ...
38 | }
39 | );
40 |
41 | DynamicallyLoadedModuleNames.AddRange(
42 | new string[]
43 | {
44 | // ... add any modules that your module loads dynamically here ...
45 | }
46 | );
47 |
48 | PrivateIncludePathModuleNames.AddRange(
49 | new string[] {
50 | "Settings",
51 | "Launch",
52 | }
53 | );
54 |
55 |
56 | if (Target.Platform == UnrealTargetPlatform.IOS) {
57 | }
58 | else if(Target.Platform == UnrealTargetPlatform.Android)
59 | {
60 | string PluginPath = Utils.MakePathRelativeTo(ModuleDirectory, BuildConfiguration.RelativeEnginePath);
61 | AdditionalPropertiesForReceipt.Add(new ReceiptProperty("AndroidPlugin", Path.Combine(PluginPath, "FacebookSDK_APL.xml")));
62 | }
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Classes/FacebookSDKComponent.h:
--------------------------------------------------------------------------------
1 |
2 | #pragma once
3 |
4 | #include "FacebookSDKFunctions.h"
5 | #include "FacebookSDKComponent.generated.h"
6 |
7 | UCLASS(ClassGroup=Advertising, HideCategories=(Activation, "Components|Activation", Collision), meta=(BlueprintSpawnableComponent))
8 | class UFacebookSDKComponent : public UActorComponent
9 | {
10 | GENERATED_BODY()
11 |
12 | public:
13 |
14 |
15 | DECLARE_MULTICAST_DELEGATE(FFacebookSDKonFacebookLoginCompletedDelegate);
16 |
17 | static FFacebookSDKonFacebookLoginCompletedDelegate onFacebookLoginCompletedDelegate;
18 |
19 | DECLARE_DYNAMIC_MULTICAST_DELEGATE(FFacebookSDKonFacebookLoginCompletedDelegateDynDelegate);
20 |
21 | UPROPERTY(BlueprintAssignable)
22 | FFacebookSDKonFacebookLoginCompletedDelegateDynDelegate onFacebookLoginCompleted;
23 |
24 |
25 | DECLARE_MULTICAST_DELEGATE(FFacebookSDKonFacebookLoginCancelledDelegate);
26 |
27 | static FFacebookSDKonFacebookLoginCancelledDelegate onFacebookLoginCancelledDelegate;
28 |
29 | DECLARE_DYNAMIC_MULTICAST_DELEGATE(FFacebookSDKonFacebookLoginCancelledDynDelegate);
30 |
31 | UPROPERTY(BlueprintAssignable)
32 | FFacebookSDKonFacebookLoginCancelledDynDelegate onFacebookLoginCancelled;
33 |
34 |
35 | DECLARE_MULTICAST_DELEGATE_OneParam(FFacebookSDKonFacebookLoginErrorDelegate, FString);
36 |
37 | static FFacebookSDKonFacebookLoginErrorDelegate onFacebookLoginErrorDelegate;
38 |
39 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFacebookSDKonFacebookLoginErrorDynDelegate, FString, Error);
40 |
41 | UPROPERTY(BlueprintAssignable)
42 | FFacebookSDKonFacebookLoginErrorDynDelegate onFacebookLoginError;
43 |
44 |
45 |
46 | void OnRegister() override;
47 | void OnUnregister() override;
48 |
49 | private:
50 |
51 |
52 | void onFacebookLoginCompleted_Handler() { onFacebookLoginCompleted.Broadcast(); }
53 | void onFacebookLoginCancelled_Handler() { onFacebookLoginCancelled.Broadcast(); }
54 | void onFacebookLoginError_Handler(FString Error) { onFacebookLoginError.Broadcast(Error); }
55 |
56 |
57 |
58 | };
59 |
--------------------------------------------------------------------------------
/Source/FacebookSDK/Private/FacebookSDKFunctions.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include "FacebookSDKPrivatePCH.h"
3 |
4 | #if PLATFORM_ANDROID
5 |
6 | #include "Android/AndroidJNI.h"
7 | #include "AndroidApplication.h"
8 |
9 | #define INIT_JAVA_METHOD(name, signature) \
10 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true)) { \
11 | name = FJavaWrapper::FindMethod(Env, FJavaWrapper::GameActivityClassID, #name, signature, false); \
12 | check(name != NULL); \
13 | } else { \
14 | check(0); \
15 | }
16 |
17 | #define DECLARE_JAVA_METHOD(name) \
18 | static jmethodID name = NULL;
19 |
20 | DECLARE_JAVA_METHOD(AndroidThunkJava_FacebookSDK_Login);
21 | DECLARE_JAVA_METHOD(AndroidThunkJava_FacebookSDK_Logout);
22 | DECLARE_JAVA_METHOD(AndroidThunkJava_FacebookGetAccessToken);
23 | DECLARE_JAVA_METHOD(AndroidThunkJava_FacebookSDK_AppInvite);
24 | DECLARE_JAVA_METHOD(AndroidThunkJava_FacebookSDK_SharePhoto);
25 | DECLARE_JAVA_METHOD(AndroidThunkJava_FacebookSDK_isLoggedIn);
26 |
27 |
28 |
29 | void UFacebookSDKFunctions::InitJavaFunctions()
30 | {
31 |
32 | INIT_JAVA_METHOD(AndroidThunkJava_FacebookSDK_Login, "()V");
33 | INIT_JAVA_METHOD(AndroidThunkJava_FacebookSDK_Logout, "()V");
34 | INIT_JAVA_METHOD(AndroidThunkJava_FacebookGetAccessToken, "()Ljava/lang/String;");
35 | INIT_JAVA_METHOD(AndroidThunkJava_FacebookSDK_AppInvite, "()V");
36 | INIT_JAVA_METHOD(AndroidThunkJava_FacebookSDK_SharePhoto, "(Ljava/lang/String;Ljava/lang/String;)V");
37 | INIT_JAVA_METHOD(AndroidThunkJava_FacebookSDK_isLoggedIn, "()Z");
38 |
39 | }
40 | #undef DECLARE_JAVA_METHOD
41 | #undef INIT_JAVA_METHOD
42 |
43 |
44 | extern "C" void Java_com_epicgames_ue4_GameActivity_nativeFacebookOnLoginComplete(JNIEnv* jenv, jobject thiz)
45 | {
46 | FGraphEventRef EnterBackgroundTask = FFunctionGraphTask::CreateAndDispatchWhenReady([&]()
47 | {
48 | UFacebookSDKComponent::onFacebookLoginCompletedDelegate.Broadcast();
49 |
50 |
51 | }, TStatId(), NULL, ENamedThreads::GameThread);
52 | }
53 |
54 | extern "C" void Java_com_epicgames_ue4_GameActivity_nativeFacebookOnLoginCancelled(JNIEnv* jenv, jobject thiz)
55 | {
56 | UFacebookSDKComponent::onFacebookLoginCancelledDelegate.Broadcast();
57 | }
58 |
59 | extern "C" void Java_com_epicgames_ue4_GameActivity_nativeFacebookOnLoginError(JNIEnv* jenv, jobject thiz, jstring error)
60 | {
61 | FString Error;
62 |
63 | const char* charsError = jenv->GetStringUTFChars(error, 0);
64 | Error = FString(UTF8_TO_TCHAR(charsError));
65 | jenv->ReleaseStringUTFChars(error, charsError);
66 |
67 | UFacebookSDKComponent::onFacebookLoginErrorDelegate.Broadcast(Error);
68 | }
69 |
70 |
71 | #endif
72 |
73 |
74 |
75 |
76 |
77 | bool UFacebookSDKFunctions:: FacebookIsLoggedIn() {
78 |
79 | #if PLATFORM_ANDROID
80 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
81 | {
82 |
83 |
84 | bool ret = FJavaWrapper::CallBooleanMethod(Env, FJavaWrapper::GameActivityThis, AndroidThunkJava_FacebookSDK_isLoggedIn);
85 |
86 |
87 |
88 | UE_LOG(LogAndroid, Warning, TEXT("I found the java method FacebookSDKisLoggedIn\n"));
89 |
90 | return ret;
91 |
92 | }
93 | else
94 | {
95 | UE_LOG(LogAndroid, Warning, TEXT("ERROR Could note get Java ENV\n"));
96 | }
97 | #endif
98 |
99 | return false;
100 |
101 | }
102 |
103 |
104 | void UFacebookSDKFunctions::FacebookSDK_Login() {
105 |
106 | #if PLATFORM_ANDROID
107 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
108 | {
109 |
110 |
111 | FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, AndroidThunkJava_FacebookSDK_Login);
112 |
113 |
114 |
115 | UE_LOG(LogAndroid, Warning, TEXT("I found the java method FacebookSDKLogin\n"));
116 | }
117 | else
118 | {
119 | UE_LOG(LogAndroid, Warning, TEXT("ERROR Could note get Java ENV\n"));
120 | }
121 | #endif
122 |
123 | }
124 |
125 | void UFacebookSDKFunctions::FacebookSDK_Logout() {
126 |
127 | #if PLATFORM_ANDROID
128 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
129 | {
130 |
131 |
132 | FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, AndroidThunkJava_FacebookSDK_Logout);
133 |
134 |
135 |
136 | UE_LOG(LogAndroid, Warning, TEXT("I found the java method FacebookSDKLogout\n"));
137 | }
138 | else
139 | {
140 | UE_LOG(LogAndroid, Warning, TEXT("ERROR Could note get Java ENV\n"));
141 | }
142 | #endif
143 |
144 | }
145 |
146 |
147 | void UFacebookSDKFunctions::FacebookSDK_AppInvite() {
148 |
149 | #if PLATFORM_ANDROID
150 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
151 | {
152 |
153 |
154 | FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, AndroidThunkJava_FacebookSDK_AppInvite);
155 |
156 |
157 |
158 | UE_LOG(LogAndroid, Warning, TEXT("I found the java method FacebookSDK_AppInvite\n"));
159 | }
160 | else
161 | {
162 | UE_LOG(LogAndroid, Warning, TEXT("ERROR Could note get Java ENV\n"));
163 | }
164 | #endif
165 |
166 | }
167 |
168 | void UFacebookSDKFunctions::FacebookSDK_SharePhoto(FString AppName, FString Filename) {
169 |
170 | #if PLATFORM_ANDROID
171 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
172 | {
173 | jstring AppNameArg = Env->NewStringUTF(TCHAR_TO_UTF8(*AppName));
174 | jstring FilenameArg = Env->NewStringUTF(TCHAR_TO_UTF8(*Filename));
175 |
176 | FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, AndroidThunkJava_FacebookSDK_SharePhoto, AppNameArg, FilenameArg);
177 |
178 | Env->DeleteLocalRef(AppNameArg);
179 | Env->DeleteLocalRef(FilenameArg);
180 |
181 | UE_LOG(LogAndroid, Warning, TEXT("I found the java method FacebookSDK_SharePhoto()\n"));
182 | }
183 | else
184 | {
185 | UE_LOG(LogAndroid, Warning, TEXT("ERROR Could note get Java ENV\n"));
186 | }
187 | #endif
188 |
189 | }
190 |
191 |
192 | FString UFacebookSDKFunctions::FacebookGetAccessToken()
193 | {
194 | FString Result;
195 |
196 | #if PLATFORM_IOS
197 |
198 | #elif PLATFORM_ANDROID
199 |
200 | if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
201 | {
202 |
203 | jstring AccessToken = (jstring)FJavaWrapper::CallObjectMethod(Env, FJavaWrapper::GameActivityThis, AndroidThunkJava_FacebookGetAccessToken);
204 |
205 | const char *s = Env->GetStringUTFChars(AccessToken, 0);
206 | Result = FString(UTF8_TO_TCHAR(s));
207 |
208 | Env->ReleaseStringUTFChars(AccessToken, s);
209 | }
210 | #endif
211 |
212 | return Result;
213 | }
--------------------------------------------------------------------------------
/Source/FacebookSDK/FacebookSDK_APL.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | ;
40 | public ;
41 | }
42 | ]]>
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | com.facebook,Facebook,4.18.0
58 |
59 |
60 |
61 |
62 |
63 |
64 | import com.facebook.FacebookSdk;
65 | import com.facebook.appevents.AppEventsLogger;
66 | import com.facebook.login.LoginResult;
67 | import com.facebook.login.LoginManager;
68 | import com.facebook.FacebookCallback;
69 | import com.facebook.CallbackManager;
70 | import com.facebook.FacebookException;
71 | import com.facebook.AccessToken;
72 | import com.facebook.share.model.AppInviteContent;
73 | import com.facebook.share.widget.AppInviteDialog;
74 | import com.facebook.share.model.SharePhoto;
75 | import com.facebook.share.model.SharePhotoContent;
76 | import com.facebook.share.model.ShareLinkContent;
77 | import com.facebook.share.widget.ShareDialog;
78 | import com.facebook.AccessTokenTracker;
79 | import com.facebook.HttpMethod;
80 | import com.facebook.Profile;
81 | import com.facebook.ProfileTracker;
82 | //import com.facebook.applinks.AppLinkData;
83 | //import bolts.AppLinks;
84 | //import bolts.AppLink;
85 | //import bolts.Task;
86 | //import bolts.Bolts;
87 |
88 | import java.util.HashSet;
89 | import java.util.Arrays;
90 | import android.text.TextUtils;
91 | import android.graphics.BitmapFactory;
92 | import android.os.Handler;
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 | photos = new ArrayList();
214 | photos.add(sharePhoto);
215 | Log.debug("FacebookSDK_SharePhotoArrayList");
216 | SharePhotoContent sharePhotoContent = new SharePhotoContent.Builder().setPhotos(photos).build();
217 | shareDialog.show(sharePhotoContent);
218 | Log.debug("FacebookSDK_ShareDialog");
219 |
220 | }
221 |
222 | public File getScreenshot(String AppName, String Filename)
223 | {
224 |
225 | File dirpath = new File(Environment.getExternalStorageDirectory().getPath());//file provider
226 | //Log.debug("dirpath is" + "/" + dirpath.toString() + dirpath.exists());
227 |
228 | //File picFile = new File(dirpath.getPath(), "UE4Game" +"/" + "Test_4_14" + "/" + "Test_4_14" + "/" + "Saved/Screenshots/Android" + "/" + "MyGame.png");
229 | File picFile = new File(dirpath.getPath(), "UE4Game" +"/" + AppName + "/" + AppName + "/" + "Saved/Screenshots/Android" + "/" + Filename);
230 | //Log.debug("picFile is" + "/" + picFile.toString() + picFile.exists());
231 | Log.debug("picFile is" + "/" + AppName + Filename);
232 |
233 | return picFile;
234 |
235 | }
236 |
237 |
238 | public native void nativeFacebookOnLoginComplete();
239 | public native void nativeFacebookOnLoginCancelled();
240 | public native void nativeFacebookOnLoginError(String error);
241 |
242 |
243 | ]]>
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 | ()
305 | {
306 | @Override
307 | public void onSuccess(LoginResult loginResult)
308 | {
309 | nativeFacebookOnLoginComplete();
310 | Log.debug("Successful Facebook login");
311 | }
312 | @Override
313 | public void onCancel()
314 | {
315 | nativeFacebookOnLoginCancelled();
316 | Log.debug("Cancelled Facebook login");
317 | }
318 | @Override
319 | public void onError(FacebookException exception)
320 | {
321 | /*
322 | try{}
323 | catch(FacebookException e){
324 |
325 | Log.debug("Error on Facebook login" + e.toString());
326 | }
327 | */
328 | nativeFacebookOnLoginError(exception.toString());
329 | Log.debug("Error on Facebook login2" + exception.toString());
330 |
331 | }
332 | });
333 |
334 | /*
335 | appLinkData = AppLinkData.createFromActivity(this);
336 |
337 | Uri targetUrl = AppLinks.getTargetUrlFromInboundIntent(this, getIntent());
338 | if (targetUrl != null) {
339 | Log.debug("App Link Target URL: " + targetUrl.toString());
340 | } else {
341 | appLinkData.fetchDeferredAppLinkData(
342 | this,
343 | new AppLinkData.CompletionHandler() {
344 | @Override
345 | public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
346 | //process applink data
347 | Log.debug("App Link Data: " );
348 | }
349 | });
350 | Log.debug("App Link Data: 2" );
351 | }
352 | */
353 | /////
354 | /*
355 | new Handler().postDelayed(new Runnable() {
356 | @Override
357 | public void run() {
358 |
359 |
360 | if (AccessToken.getCurrentAccessToken() != null) {
361 | Log.debug("facebook already logged in");
362 | LoginManager.getInstance().logOut();
363 | Log.debug("Log out of Facebook");
364 |
365 | }
366 |
367 |
368 | }
369 | }, 100);
370 | */
371 |
372 | ///
373 |
374 |
375 | ]]>
376 |
377 |
378 |
379 |
380 |
381 | accessTokenTracker.stopTracking();
382 | profileTracker.stopTracking();
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 | // Call the 'deactivateApp' method to log an app event for use in analytics and advertising reporting.
406 | //AppEventsLogger.deactivateApp(getApplication());
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 | // Call the 'deactivateApp' method to log an app event for use in analytics and advertising reporting.
415 | //AppEventsLogger.deactivateApp(getApplication());
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 | if (callbackManager != null)
424 | {
425 | callbackManager.onActivityResult(requestCode, resultCode, data);
426 | }
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
439 |
440 |
441 |
--------------------------------------------------------------------------------
/lib/Android/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | true
8 | false
9 | true
10 | true
11 | true
12 | false
13 | true
14 | false
15 | @android:color/black
16 | #7fa87f
17 | @android:color/black
18 | @android:color/black
19 | @color/material_deep_teal_200
20 | @color/material_deep_teal_500
21 | @color/material_grey_800
22 | @android:color/white
23 | @color/material_grey_850
24 | @color/material_grey_50
25 | #80ffffff
26 | #80000000
27 | @color/bright_foreground_material_light
28 | @color/bright_foreground_material_dark
29 | @android:color/white
30 | @android:color/black
31 | #ff5a595b
32 | #ffd6d7d7
33 | #80bebebe
34 | #80323232
35 | #ffbebebe
36 | #ff323232
37 | @android:color/white
38 | @android:color/black
39 | #6680cbc4
40 | #66009688
41 | @color/bright_foreground_disabled_material_dark
42 | @color/bright_foreground_disabled_material_light
43 | #ff37474f
44 | #ff263238
45 | #ff21272b
46 | #ff80cbc4
47 | #ff009688
48 | #fff5f5f5
49 | #ffe0e0e0
50 | #fffafafa
51 | #ff757575
52 | #ff424242
53 | #ff303030
54 | #ff212121
55 | @android:color/black
56 | @color/material_grey_600
57 | @color/material_grey_900
58 | @color/material_grey_100
59 | #ffffffff
60 | #de000000
61 | #4Dffffff
62 | #39000000
63 | #33ffffff
64 | #1f000000
65 | #b3ffffff
66 | #8a000000
67 | #36ffffff
68 | #24000000
69 | #ff616161
70 | #ffbdbdbd
71 | #ffbdbdbd
72 | #fff1f1f1
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | 16dp
103 | 56dp
104 | 0dp
105 | 0dp
106 | 16dp
107 | 10dp
108 | 6dp
109 | 40dp
110 | 48dp
111 | 180dp
112 | 5dp
113 | -3dp
114 | 48dp
115 | 48dp
116 | 36dp
117 | 48dp
118 | @dimen/abc_control_inset_material
119 | 6dp
120 | 8dp
121 | @dimen/abc_control_padding_material
122 | 320dp
123 | 2dp
124 | 4dp
125 | 4dp
126 | - 80%
127 | - 100%
128 | - 320dp
129 | - 320dp
130 | 8dp
131 | - 65%
132 | - 95%
133 | 24dp
134 | 18dp
135 | - 0.30
136 | - 0.26
137 | 32dip
138 | 8dip
139 | 8dip
140 | 7dp
141 | 4dp
142 | 10dp
143 | 16dp
144 | @dimen/abc_action_bar_content_inset_material
145 | 296dp
146 | 320dip
147 | 160dip
148 | 2dp
149 | 2dp
150 | 20dp
151 | 3dp
152 | 14sp
153 | 14sp
154 | 14sp
155 | 12sp
156 | 34sp
157 | 45sp
158 | 56sp
159 | 112sp
160 | 24sp
161 | 22sp
162 | 18sp
163 | 16sp
164 | 14sp
165 | 16sp
166 | 16dp
167 | 20sp
168 | 20dp
169 | - 0.30
170 | - 0.26
171 | - 0.26
172 | - 0.20
173 | - 0.12
174 | 64dp
175 | 64dp
176 | 12dp
177 | #3333B5E5
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 | 220
188 | 150
189 | 2
190 | 127
191 | 999
192 | Navigate home
193 | %1$s, %2$s
194 | %1$s, %2$s, %3$s
195 | Navigate up
196 | More options
197 | Done
198 | See all
199 | Choose an app
200 | OFF
201 | ON
202 | Search…
203 | Clear query
204 | Search query
205 | Search
206 | Submit query
207 | Voice search
208 | Share with
209 | Share with %s
210 | Collapse
211 | 999+
212 |
213 |
214 |
215 |
216 |
223 |
224 |
228 |
232 |
237 |
243 |
250 |
254 |
258 |
263 |
267 |
271 |
275 |
279 |
283 |
287 |
291 |
295 |
299 |
301 |
303 |
307 |
311 |
315 |
320 |
324 |
327 |
331 |
335 |
339 |
343 |
347 |
351 |
355 |
359 |
363 |
367 |
371 |
372 |
373 |
374 |
377 |
380 |
382 |
384 |
385 |
386 |
389 |
391 |
393 |
395 |
400 |
401 |
405 |
411 |
415 |
416 |
418 |
429 |
430 |
434 |
440 |
444 |
445 |
446 |
450 |
476 |
480 |
507 |
662 |
684 |
839 |
861 |
868 |
873 |
894 |
899 |
904 |
914 |
923 |
932 |
935 |
942 |
950 |
957 |
958 |
967 |
970 |
973 |
978 |
982 |
986 |
989 |
990 |
994 |
998 |
1008 |
1013 |
1020 |
1026 |
1027 |
1030 |
1034 |
1039 |
1041 |
1043 |
1046 |
1049 |
1051 |
1055 |
1062 |
1065 |
1068 |
1072 |
1074 |
1078 |
1080 |
1086 |
1088 |
1092 |
1100 |
1108 |
1120 |
1126 |
1135 |
1146 |
1149 |
1154 |
1166 |
1171 |
1209 |
1248 |
1249 |
1259 |
1268 |
1269 |
1271 |
1275 |
1278 |
1281 |
1284 |
1287 |
1291 |
1294 |
1297 |
1300 |
1304 |
1307 |
1311 |
1315 |
1316 |
1317 |
1318 |
1319 |
1320 |
1321 |
1322 |
1323 |
1324 |
1325 |
1326 |
1327 |
1328 |
1329 |
1330 |
1332 |
1334 |
1335 |
1336 |
1337 |
1339 |
1341 |
1342 |
1343 |
1344 |
1345 |
1346 |
1347 |
1349 |
1350 |
1352 |
1353 |
1355 |
1357 |
1358 |
1360 |
1361 |
1362 |
1363 |
1365 |
1367 |
1369 |
1370 |
1371 |
1372 |
1373 |
1374 |
1375 |
1376 |
1378 |
1380 |
1382 |
1383 |
1384 |
1385 |
1386 |
1387 |
1388 |
1389 |
1390 |
1391 |
1392 |
1393 |
1394 |
1396 |
1397 |
1398 |
1399 |
1400 |
1401 |
1403 |
1407 |
1411 |
1412 |
1413 |
1414 |
1415 |
1416 |
1418 |
1420 |
1422 |
1424 |
1426 |
1427 |
1428 |
1429 |
1431 |
1433 |
1435 |
1436 |
1437 |
1438 |
1439 |
1440 |
1441 |
1442 |
1443 |
1444 |
1445 |
1446 |
1449 |
1450 |
1451 |
1452 |
1454 |
1456 |
1457 |
1459 |
1460 |
1462 |
1464 |
1466 |
1467 |
1468 |
1469 |
1470 |
1471 |
1472 |
1473 |
1474 |
1475 |
1476 |
1478 |
1480 |
1481 |
1482 |
1484 |
1485 |
1486 |
1488 |
1490 |
1492 |
1494 |
1496 |
1498 |
1499 |
1500 |
1501 |
1502 |
1503 |
1504 |
1505 |
1506 |
1507 |
1508 |
1509 |
1510 |
1511 |
--------------------------------------------------------------------------------