Using Firebase with tvOS - swift

When I try to use the Firebase framework with tvOS (via cocoapods) I get the following error:
Target 'Pods-Portal TV' of project 'Pods' was rejected as an implicit dependency for 'Pods_Portal_TV.framework' because it doesn't contain platform 'appletvsimulator' in its SUPPORTED_PLATFORMS 'iphonesimulator, iphoneos'
I 'tricked' cocoapods to install the framework due to it not recognizing tvOS as a supported platform, by declaring the target as :ios.
So it's easy to see what the problem is. My question: Is it possible to work around this until Firebase officially supports tvOS?

EDIT (8/5/17): tvOS support is being added to the open source Firebase SDK in issue #10. Please follow along there and contribute!
Firebase developer here.
I've built a beta version of the Firebase framework for tvOS, and I'm happy to share with folks so they can give feedback. Please email me at mcdonald firebase com for access.
EDIT (7/28/16): Given the date on this post and the huge Firebase release at Google I/O 2016, there are a few extra caveats I should add to what this library does.
This is a version of the 2.x client and will work with the database on all projects. Authentication however, will not work with projects created after 5/18/2016.
This client is not compatible with Nest, as Nest only supports the 1.x Firebase clients.
EDIT (8/27/16): Please fill out this form to let us know you'd like support for Firebase on other platforms (macOS, tvOS, watchOS).
EDIT (10/29/21): Firebase 8.9.0 introduces official beta support for macOS, tvOS, and Catalyst. watchOS continues to be community supported.

Ok, so I got it working, albeit, a bit flaky.
This is a very quick guide as to how, at the time of writing.
First you need to setup CocoaPods to use unreleased features and get the master branch of cocoapods / cocoapods-core
Then you need to create a private spec repo or use mine
Remember to set your xcode path to your beta version of xcode sudo xcode-select -s /Applications/Xcode-Beta.app/Contents/Developer otherwise the spec won't build.
Then set your source to your spec file, and set the platform to platform :tvos, '9.0' in your Podfile, then pod install.
Your Project should then build and run, but with about 155 warnings:
ld: warning: URGENT: building for tvOS simulator, but linking in object file (/Users/..../..../.... /tvOS/Pods/Firebase/Firebase.framework/Firebase(FPendingPut.o)) built for iOS. Note: This will be an error in the future.
So obviously not a solid solution. Definately not a production solution. But hopefully Firebase will add support in the future. I spoke to Frank from the Firebase team who said that he will take it up at the next feature discussion to see if they want to include it. Here's to hoping they will :)
Also, I had to Comment out the Accounts/Accounts.h import statement in the FAuthData.h for some reason? I don't know if anyone can elaborate on that

Getting some progress from the open source community lately, I just got auth/database working after one or two hours, mostly fighting with the podfile. Seems to work, check out https://github.com/firebase/firebase-ios-sdk#community-supported-efforts

Related

How can i 'complete' my dart SDK rather than installing a separate version when using flutter?

I installed flutter by downloading and installing a release version.
It contains a partial dart SDK in its cache subfolder.
Namely, it's missing (amongst others executables) dart2native.
I realize I could just download and install a separate dart SDK from their website, then change all my paths to point to this newer, complete SDK. But that's exactly the problem - I do not wish to run 2 sdk version in parallel, it's confusing and likely will cause errors down the line (for example, my copy of android studio might be pointing at this or that SDK, and god knows what other tools might point towards it).
Question: is there a way to 'fill' my flutter dart SDK with the missing tools? Or am i doomed to run 2 version of dart SDK in parallel?
Answering my own question - after much googling, I found a repo maintainer stating that "For now, if you want to do to Dart development and use the Dart terminal commands (like dartfmt, pub, or dart2native), it's recommended that you download and install the Dart SDK. If you'd like you can also add it to path."
This is clearly sub-optimal. In fact just as I expected it seems to have led to a few people having faced issues, comment on https://github.com/flutter/flutter/issues/43968 if you'd like to see this addressed.

Firebase iOS Swift Authentication API_UNAVAILABLE(macCatalyst) problem

I've just used identical procedures to those that were working a few weeks ago on an earlier app using Firebase Authentication in iOS/Swift. I've just added authentication code after configuring app, registering app, downloading & performing proper updates with the GoogleService-Info.plist, etc.
When I run, I get an error in OIDExternalUserAgentIOSCustomBrowser.h on the line:
API_UNAVAILABLE(macCatalyst) // currently 38
stating it "expected ;"
Did a quick cross-ref of this Google code with code that worked & loaded via CocoaPods a few weeks ago, and there's no mention of macCatalyst in that code.
Any thoughts on what's up or suggested workarounds?
I tried adding pod 'AppAuth','~> 1.2.0' and it at least compiled for me. I'm going to do some more testing but as a "fix" for now this seems to work.
-Edit
Seems to be working fine now :) Hopefully they get the new version of AppAuth fixed, but it seems like 1.2.0 works well.
I was running under Xcode 10. Apparently everything works fine in Xcode 11. Perhaps Google's Firebase team didn't update w/backward compatibility in mind?
Same issue with my app also. After some trial and error I found a solution.
Use pod 'GoogleSignIn', '~> 4.1.1' instead of version 5.0.1

No such module 'FBAudienceNetwork' in XCode 9 Swift 4

I installed the FBAudienceNetwork (version 4.26.0) with CocoaPods (version 1.3.1). I followed the official manual as published at https://developers.facebook.com/docs/audience-network/ios, but the Xcode still not recognized the framework.
Just to be clear - I opened the project from xcworkspace file.
I tried the following steps with no success:
Install the framework manually, adding the ~/Documents/FacebookSDK path to Framework Search Path
Make sure that the pods project compiled using Swift 4
Added also FBSDKCoreKit (with Bolts) and FBSDKShareKit (both frameworks imported successfully)
Clean the project, delete DerivedData and also clean the pods cache and reinstalling the pods
Nothing worked so far. Anyone faced the same issue and know the reason?
Fixed in v4.27.0
Another solution that uses latest SDK (until Facebook fixes this) is to add a line to your Objc bridging header:
#import <FBAudienceNetwork/FBAudienceNetwork.h>
Of course this assumes you are using a bridging header, and if you're not then you could add one but that defeats the point of using modules. Hopefully Facebook fixes this soon.
I'm also seeing the same problem. I'm watching the Facebook bug report, but it's already been closed so I don't have high hopes of it being fixed anytime soon. Facebook suggested adding "$(SRCROOT)" to your Framework Search Paths as a work around, but it didn't work for me.
For now, I've manually locked my "FBAudienceNetwork" pod to version 4.25.0 with the following line in my Podfile:
pod 'FBAudienceNetwork', '4.25.0'
Try this solution it will fix your issue.
You need to rename FBAudienceNetwork.modulemap to module.modulemap in FBAudienceNetwork.framework/Modules folder.
v4.26
From the audience network installation guide
Good luck
Following this post:
https://developers.facebook.com/bugs/185968218614056/
and after downgrade to version 4.23 (supported by MoPub mediation as written here: https://github.com/mopub/mopub-ios-sdk/wiki/Integrating-Native-Third-Party-Ad-Networks) the integration is working (by adding the framework manually).
This is a bug in 4.26 version, so anyone that encourage the same issue, you have to wait for Facebook fixing this bug. I recommend to subscribe and follow the discussion I posted.
It works when I'm using only the framework within the "static" folder.

Updating Ionic Apps in real time

I'm a web developer, new to Ionic.But I can't find out how can I update my app on the server,like a website,and without having user redownload the app.Is there any solutions?
Thanks!
There's an available plugin you can use Cordova-hot-code-push
This plugin provides functionality to perform automatic updates of the web based content in your application.Basically, everything that is stored in www folder of your Cordova project can be updated using this plugin.
supported platforms: Android 4.0.0 or above.
iOS 7.0 or above. Xcode 7 is required.
It has a great wiki too.
Yes, as of recently there is a solution for this. Ionic calls it Ionic Deploy, and you can see the official documentation about it here.
However, one must note that this is still in Alpha version and they don't recommend it for production, but since they're very apt in shipping new features, I'm sure this will be even production ready very soon.

No transports available

I recently was trying to upgrade my react-native app to use react-native 0.5.0 and firebase. According to this article the react-native sockets are working and the full firebase sdk should be available.
I was previously using firebase-debug and #badfortrains react-native fork with success following the example project https://github.com/badfortrains/wsExample.
Since upgrading to I now am getting this error
When looking at the issues on the react-native repo I came across this https://github.com/sjmueller/firebase-react-native/issues/1
#stephenplusplus says he pushed a bunch of buttons and activated magic. Any idea what he is referencing??
There is also this other SO question Error creating user: { [Error: There are no login transports available for the requested method.] code: 'TRANSPORT_UNAVAILABLE' }
Any help on understanding the issue between using badfortrains with firebase-debug and the newest version of react-native with firebase would be appreciated.
I don't know if I am implementing something incorrectly or if the article mentioned above is a bit overzealous.
Thoughts???
Thanks.
Oddly enough starting a new project from scratch using the react-native-cli generator I was able to copy and paste all of my components over to the new project and have everything work perfectly.
I am not sure where the problem is but I will assume for now that there is an issue with the xcode project settings when trying to upgrade. Despite cleaning the project, resetting xcode to default settings, removing all derived data, restarting the package bundler, nothing worked until I created a new project.
This should prove there is nothing wrong with the JavaScript frameworks but rather it is some obscure xcode project setting. I will continue to look for a solution other than spinning a new project but for now it works.