Why is Firebase based app not working in Iran? - ios

I am working on an iOS project for my client from Iran using Firebase. When my client tries to open the Firebase website (https://www.firebase.google.com), he is getting error like:
"Your client does not have permission to get URL / from this server.
That’s all we know."
Anyone has any idea about this? Is firebase not available in Iran? Lets say I tell him to use VPN, will the user from Iran be able to use this app after release?
Would appreciate if somebody from Iran can help me out.

By my friends, I know that many things are filtered in Iran.
Some filters are by government ( porn sites or some social media sites) and some are by sanctions ( some technological tools). This which you are facing now is a sanction.
For browsers: he has to go into incognito to avoid any previous caches and also Yes use a VPN.
As for the app: it depends, would firebase.google know about the IP address of where it was originated? if so then yes it won't be able to work and you must somehow think of some local service or somehow incorporate a VPN into your app.
I recommend you seek consultation from your client, it's really not your responsibility and I assure you that this isn't a huge problem, there must be plenty of workarounds that you just don't know of.
EDIT: It seems that there is an Iranian alternative to Firebase. It's called Pushe.

google does not provide their service to Iran,Cuba,North Korea,Syria and Crimea.
in terms of Policy page
The Software is controlled by U.S. Export Regulations, and it may be
not be exported to or used by embargoed countries or individuals.
so the Problem is USA Government

I have the same problem with FireBase (only in android)
This is the exact exception I'm getting:
signInWithEmail
com.google.firebase.FirebaseException: An internal error has occured. [ This service is not available from your country ]
at com.google.android.gms.internal.zzacq.zzbN(Unknown Source)
at com.google.android.gms.internal.zzacn$zzg.zza(Unknown Source)
at com.google.android.gms.internal.zzacy.zzbO(Unknown Source)
at com.google.android.gms.internal.zzacy$zza.onFailure(Unknown Source)
at com.google.android.gms.internal.zzact$zza.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:446) at com.google.android.gms.internal.zzact$zza.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:446)
I guess it's clear that fire base won't work in Iran.
And here I thought it was going to be available for everyone!

pushe is just a notification service
There is a way that you can use https://github.com/kreait/firebase-tokens-php and something like php laravel for backend.
This is how you can change ip address for requesting and get response to the firebase database service.

Working with Firebase in Iran isn't possible. Therefore, you should use an alternative solution.
One of the best backend service out there is Parse Platform.
Although You can set your own Parse server up, you can use Back4App, which is based on Parse.
Easy to use, vast capabilities and generous free tier makes Back4App service suitable for learning and doing small projects as an alternative of Firebase.

Related

Monitoring Flowground

This question goes directly to the Flowground developers: Error notifications can currently only be sent by e-mail. This is very difficult to integrate into a monitoring system.
I know that I can use the API to query whether a flow is currently running or not. But I can not receive any error messages.
In the original API of elastic.io it is also possible to access logs: https://api.elastic.io/docs/v2/#retrieve-all-workspace-logs This does not work with Flowground. Are there plans or other possibilities?
The feature is currently "experimental" on the elastic.io instance. As soon as it will be productive, it will also be available on flowground.net.
Nonetheless I will talk with elastic.io, if it will be possible, to get access to this "experimental" feature a little bit earlier and give you feedback #Stephan Häußler.

Google YOLO stop working : The client origin is not permitted to use this API

I assume it has something to do with this:
For me Google one Tap stopped working on all my sites that previously worked. I added API HTTP refer to restriction in console.developer.com, but I still get a warning message "The client origin is not permitted to use this API." any thoughts? If you go to the page https://www.wego.com/ you can see that Google one tap still works...
https://news.ycombinator.com/item?id=17044518#17045809
but Google YOLO stop working for everyone. I use it like many people for login and it just stop work.
My domain are obviously added on console.developers.google.com
Any ETA for fix this? Some information would be great for people who rely on it.
Google YOLO is not disabled. It is open to a small list of Google Partners.
The reason you were able to access it earlier was because it was open for a short period of time but the whitelist is now readded/enabled.
Reference:
https://twitter.com/sirdarckcat/status/994867137704587264
Google YOLO was put on whitelist after a client-side exploit became clear to google.
People could cover the login button of the prompt with something like a cookie consent (which we all know people automatically accept).
Therefor people could easily steal their gmail or other details due to this google decided to put it on whitelist and review the sites that are using this technology in order to ensure that they are using it as they should.
Google retroactively labeled One-Tap as a "closed beta".
https://developers.google.com/identity/one-tap/web
The beta test program for this API is currently closed. We are improving the API's cross-browser functionality and will provide updates here in the coming months.
The link for the entire project is currently 404, but the beta statement is visible on the wayback machine.

Keeping users in sync with each other in an social network app?

I am wondering about what the best way to keep users in sync with each other in a social network is. The concerned stack is an iOS app with a NodeJS backend. Let me give you an example:
Say X and Y are friends on a social network. Y's posts appear in X's feed, and as such, Y is cached somewhere on the X's phone. This morning, Y decided to change profile pictures however. Everything is well, the new picture is uploaded to the server, but how do we go about letting X know about the change of profile picture?
My possible solution: Create a route /<UID>/updates that contains a stack of "cookies" which lets the user know what and who changed since the last time they made a GET request to the route.
This seems elegant enough, but what worries me is what happens on the client side (am I supposed to make a GET request every 2 minutes during my app's uptime?). Are there any other solutions?
One solution is indeed to poll the server, but that's not very elegant. A better way is to make use of websockets:
WebSockets is an advanced technology that makes it possible to open an interactive communication session between the user's browser and a server. With this API, you can send messages to a server and receive event-driven responses without having to poll the server for a reply.
They are a 2-way connection between client and server, allowing the server to notify the client of any changes. This is the underlying technology used in the Meteor framework for example.
Take a look at this blogpost for an example of how to use websockets between an iOS client and a NodeJS backend. They make use of the open source SocketRocket iOS library.

Solution for Web Application with Unreliable Internet Connection

We've developed a web application which is hosted on premises available for people in the shop floor via Wifi. However, the wifi signal is not reliable and it's not possible to use wired network or improve the signal.
I am looking for a solution to handle this issue. Is there a way to put the http requests into a local queue and process it asynchronously at the background? If so, how to do it? Or is there any other alternative approach?
Any thoughts are greatly appreciated.
I have the same problem in the company where I work, there are certain places where the WiFi can not reach, and the system needs to get information from the DB in order to show that info to the user and then upload some new info.
Part of this system is done with iPads, so to solve the problem I use LocalStorage to store a JSON object that contains the info the user need to work, I store the info that is going to be uploaded in another JSON object, and when there is a connection available the info is Uploaded.
Hope it helps
I would recommend to build the web app with angularjs or another javascript framework of your choice. Once the user has loaded the site you can perform asynchronous ajax/http requests to load the required data and the web app will never reload the entire page.
In case one http request fails you can implement that the web app should try one more time or whatever :)

Display multiple objects from server

I am making an iOS app that will display images, videos, and textual information that I provide.
this information needs to be updated and refreshed as the user requests, time interval, and when the user opens the app. Not hardcoded and changed on app store updates.
How would i go about doing this?
Do I need to create an online web server that I pull the information from?
If so how would I go about creating a server?
Could anyone point me in the correct direction?
yeah you have to use web Services. that means you have to create one server & from that server you can send images,text as you required without making hardcoded. you just have to pull the value from web service.
images,text all this can be send through xml & you have to accept that xml & have to parse it
You can install an Apache server on your MacOS, read read this:
http://osxdaily.com/2012/09/02/start-apache-web-server-mac-os-x/
I ended up using parse which has excellent mobile support. And is free until you receive a certain amount of traction. I recommend it!

Resources