Skip to content

Commit fa07fae

Browse files
authored
Merge pull request #443 from firebase/feature/tvos-support
Feature/tvos support
2 parents 5c7390c + e4ac5c0 commit fa07fae

40 files changed

+1582
-88
lines changed

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ if(FIREBASE_CPP_BUILD_TESTS)
107107
${CMAKE_BINARY_DIR})
108108
endif()
109109

110+
if (PLATFORM STREQUAL TVOS OR PLATFORM STREQUAL SIMULATOR_TVOS)
111+
# AdMob, FDL are not supported on tvOS.
112+
set(FIREBASE_INCLUDE_ADMOB OFF)
113+
set(FIREBASE_INCLUDE_DYNAMIC_LINKS OFF)
114+
endif()
115+
110116
# Occasionally ANDROID is not being set correctly when invoked by gradle, so
111117
# set it manually if ANDROID_NDK has been defined.
112118
if(DEFINED ANDROID_NDK)

admob/src/common/banner_view_internal.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424

2525
#if FIREBASE_PLATFORM_ANDROID
2626
#include "admob/src/android/banner_view_internal_android.h"
27-
#elif FIREBASE_PLATFORM_IOS
27+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
2828
#include "admob/src/ios/banner_view_internal_ios.h"
2929
#else
3030
#include "admob/src/stub/banner_view_internal_stub.h"
31-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
31+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
32+
// FIREBASE_PLATFORM_TVOS
3233

3334
namespace firebase {
3435
namespace admob {
@@ -40,11 +41,12 @@ BannerViewInternal::BannerViewInternal(BannerView* base)
4041
BannerViewInternal* BannerViewInternal::CreateInstance(BannerView* base) {
4142
#if FIREBASE_PLATFORM_ANDROID
4243
return new BannerViewInternalAndroid(base);
43-
#elif FIREBASE_PLATFORM_IOS
44+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
4445
return new BannerViewInternalIOS(base);
4546
#else
4647
return new BannerViewInternalStub(base);
47-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
48+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
49+
// FIREBASE_PLATFORM_TVOS
4850
}
4951

5052
void BannerViewInternal::SetListener(BannerView::Listener* listener) {

admob/src/common/interstitial_ad_internal.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424

2525
#if FIREBASE_PLATFORM_ANDROID
2626
#include "admob/src/android/interstitial_ad_internal_android.h"
27-
#elif FIREBASE_PLATFORM_IOS
27+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
2828
#include "admob/src/ios/interstitial_ad_internal_ios.h"
2929
#else
3030
#include "admob/src/stub/interstitial_ad_internal_stub.h"
31-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
31+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
32+
// FIREBASE_PLATFORM_TVOS
3233

3334
namespace firebase {
3435
namespace admob {
@@ -41,11 +42,12 @@ InterstitialAdInternal* InterstitialAdInternal::CreateInstance(
4142
InterstitialAd* base) {
4243
#if FIREBASE_PLATFORM_ANDROID
4344
return new InterstitialAdInternalAndroid(base);
44-
#elif FIREBASE_PLATFORM_IOS
45+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
4546
return new InterstitialAdInternalIOS(base);
4647
#else
4748
return new InterstitialAdInternalStub(base);
48-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
49+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
50+
// FIREBASE_PLATFORM_TVOS
4951
}
5052

5153
void InterstitialAdInternal::SetListener(InterstitialAd::Listener* listener) {

admob/src/common/native_express_ad_view_internal.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424

2525
#if FIREBASE_PLATFORM_ANDROID
2626
#include "admob/src/android/native_express_ad_view_internal_android.h"
27-
#elif FIREBASE_PLATFORM_IOS
27+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
2828
#include "admob/src/ios/native_express_ad_view_internal_ios.h"
2929
#else
3030
#include "admob/src/stub/native_express_ad_view_internal_stub.h"
31-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
31+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
32+
// FIREBASE_PLATFORM_TVOS
3233

3334
namespace firebase {
3435
namespace admob {
@@ -44,11 +45,12 @@ NativeExpressAdViewInternal* NativeExpressAdViewInternal::CreateInstance(
4445
NativeExpressAdView* base) {
4546
#if FIREBASE_PLATFORM_ANDROID
4647
return new NativeExpressAdViewInternalAndroid(base);
47-
#elif FIREBASE_PLATFORM_IOS
48+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
4849
return new NativeExpressAdViewInternalIOS(base);
4950
#else
5051
return new NativeExpressAdViewInternalStub(base);
51-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
52+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
53+
// FIREBASE_PLATFORM_TVOS
5254
}
5355

5456
void NativeExpressAdViewInternal::SetListener(

admob/src/common/rewarded_video_internal.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424

2525
#if FIREBASE_PLATFORM_ANDROID
2626
#include "admob/src/android/rewarded_video_internal_android.h"
27-
#elif FIREBASE_PLATFORM_IOS
27+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
2828
#include "admob/src/ios/rewarded_video_internal_ios.h"
2929
#else
3030
#include "admob/src/stub/rewarded_video_internal_stub.h"
31-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
31+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
32+
// FIREBASE_PLATFORM_TVOS
3233

3334
namespace firebase {
3435
namespace admob {
@@ -41,11 +42,12 @@ RewardedVideoInternal::RewardedVideoInternal()
4142
RewardedVideoInternal* RewardedVideoInternal::CreateInstance() {
4243
#if FIREBASE_PLATFORM_ANDROID
4344
return new RewardedVideoInternalAndroid();
44-
#elif FIREBASE_PLATFORM_IOS
45+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
4546
return new RewardedVideoInternalIOS();
4647
#else
4748
return new RewardedVideoInternalStub();
48-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
49+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
50+
// FIREBASE_PLATFORM_TVOS
4951
}
5052

5153
void RewardedVideoInternal::SetListener(Listener* listener) {

admob/src/include/firebase/admob/types.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@
2121

2222
#if FIREBASE_PLATFORM_ANDROID
2323
#include <jni.h>
24-
#elif FIREBASE_PLATFORM_IOS
24+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
2525
extern "C" {
2626
#include <objc/objc.h>
2727
} // extern "C"
28-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
28+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
29+
// FIREBASE_PLATFORM_TVOS
2930

3031
namespace firebase {
3132
namespace admob {
@@ -40,13 +41,14 @@ namespace admob {
4041
#if FIREBASE_PLATFORM_ANDROID
4142
/// An Android Activity from Java.
4243
typedef jobject AdParent;
43-
#elif FIREBASE_PLATFORM_IOS
44+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
4445
/// A pointer to an iOS UIView.
4546
typedef id AdParent;
4647
#else
4748
/// A void pointer for stub classes.
4849
typedef void *AdParent;
49-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
50+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS,
51+
// FIREBASE_PLATFORM_TVOS
5052

5153
#ifdef INTERNAL_EXPERIMENTAL
5254
// LINT.IfChange

app/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ set(app_ios_SRCS
156156
src/invites/ios/invites_receiver_internal_ios.mm
157157
src/invites/ios/invites_ios_startup.mm
158158
src/uuid_ios_darwin.mm)
159+
if (PLATFORM STREQUAL TVOS OR PLATFORM STREQUAL SIMULATOR_TVOS)
160+
# TVOS does not have a web browser and does not support dynamic links.
161+
# Remove these files if we are building for TVOS.
162+
list(REMOVE_ITEM app_ios_SRCS
163+
src/invites/ios/invites_receiver_internal_ios.mm
164+
src/invites/ios/invites_ios_startup.mm)
165+
endif()
166+
159167
set(app_desktop_SRCS
160168
src/app_desktop.cc
161169
src/heartbeat_date_storage_desktop.cc

app/src/app_common.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ const char* kCpuArchitecture = "arm32";
9090
const char* kCppRuntimeOrStl = "libcpp";
9191
#if FIREBASE_PLATFORM_IOS
9292
const char* kOperatingSystem = "ios";
93+
#elif FIREBASE_PLATFORM_TVOS
94+
const char* kOperatingSystem = "tvos";
9395
#elif FIREBASE_PLATFORM_OSX
9496
const char* kOperatingSystem = "darwin";
9597
#else

app/src/include/firebase/app.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include <map>
2727
#include <string>
2828

29-
#if FIREBASE_PLATFORM_IOS
29+
#if FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
3030
#ifdef __OBJC__
3131
@class FIRApp;
3232
#endif // __OBJC__
@@ -718,14 +718,14 @@ class App {
718718
/// @return Global reference to the FirebaseApp. The returned reference
719719
/// most be deleted after use.
720720
jobject GetPlatformApp() const;
721-
#elif FIREBASE_PLATFORM_IOS
721+
#elif FIREBASE_PLATFORM_IOS || FIREBASE_PLATFORM_TVOS
722722
#ifdef __OBJC__
723723
/// Get the platform specific app implementation referenced by this object.
724724
///
725725
/// @return Reference to the FIRApp object owned by this app.
726726
FIRApp* GetPlatformApp() const;
727727
#endif // __OBJC__
728-
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS
728+
#endif // FIREBASE_PLATFORM_ANDROID, FIREBASE_PLATFORM_IOS, FIREBASE_PLATFORM_TVOS
729729
#endif // INTERNAL_EXPERIMENTAL
730730

731731
private:

app/src/include/firebase/internal/platform.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
#define FIREBASE_PLATFORM_ANDROID 0
3838
#define FIREBASE_PLATFORM_IOS 0
39+
#define FIREBASE_PLATFORM_TVOS 0
3940
#define FIREBASE_PLATFORM_OSX 0
4041
#define FIREBASE_PLATFORM_WINDOWS 0
4142
#define FIREBASE_PLATFORM_LINUX 0
@@ -51,6 +52,9 @@
5152
#elif defined(TARGET_OS_IOS) && TARGET_OS_IOS
5253
#undef FIREBASE_PLATFORM_IOS
5354
#define FIREBASE_PLATFORM_IOS 1
55+
#elif defined(TARGET_OS_TV) && TARGET_OS_TV
56+
#undef FIREBASE_PLATFORM_TVOS
57+
#define FIREBASE_PLATFORM_TVOS 1
5458
#elif defined(TARGET_OS_OSX) && TARGET_OS_OSX
5559
#undef FIREBASE_PLATFORM_OSX
5660
#define FIREBASE_PLATFORM_OSX 1

0 commit comments

Comments
 (0)