Вопросы по тегу: firebase

(67)

Облачные функции для Firebase – платежный аккаунт не настроен

Я только что реализовал новые облачные функции для Firebase, но что-то в журнале меня беспокоит: Платежный аккаунт не настроен. Внешняя сеть недоступна и квоты строго ограничены. Настройте платежный аккаунт, чтобы удалить эти ограничения На самом деле мне удалось получить доступ к функции из внешней сети, поэтому мне интересно, действительно ли мне нужно указывать свой платежный аккаунт? В документации firebase об этом ничего нет.Я использую план подписки Spark для личного тестирования и не хочу добавлять платежную информацию, если пока не собираюсь ни за что платить.
H

Hristo Stoyanov

5 лет назад

Ответов: 6

Как запретить Firebase регистрировать обновления статуса при запуске приложения

Каждый раз, когда я запускаю приложение FireBase, оно регистрирует состояние различных функций Firebase. Сейчас логируется вот это:Configuring the default app. Firebase Analytics v.3200000 started To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...) Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO Firebase Analytics enabled Я просмотрел модули и не нашел никаких операторов печати, так как еще я могу предотвратить их ведение журнала сверхурочно, когда я запускаю приложение?
J

JCode

6 лет назад

Ответов: 10

Значок уведомления с новой системой обмена сообщениями Firebase Cloud

Вчера Google представила на Google I/O новую систему уведомлений, основанную на новой Firebase. Я попробовал этот новый FCM (Firebase Cloud Messaging) с примером на Github.Значок уведомления всегда ic_launcher, несмотря на то, что я объявил конкретную возможность рисованияПочему? Здесь ниже официальный код для обработки сообщенияpublic class AppFirebaseMessagingService extends FirebaseMessagingService { /** * Called when message is received. * * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. */ // [START receive_message] @Override public void onMessageReceived(RemoteMessage remoteMessage) { // If the application is in the foreground handle both data and notification messages here. // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. sendNotification(remoteMessage); } // [END receive_message] /** * Create and show a simple notification containing the received FCM message. * * @param remoteMessage FCM RemoteMessage received. */ private void sendNotification(RemoteMessage remoteMessage) { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // this is a my insertion looking for a solution int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.myicon: R.mipmap.myicon; NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(icon) .setContentTitle(remoteMessage.getFrom()) .setContentText(remoteMessage.getNotification().getBody()) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); } }
m

marco

6 лет назад

Ответов: 10

Как отправить уведомление Firebase на все устройства через CURL?

Я пытаюсь отправить уведомление всем пользователям приложения (на Android), по сути, дублируя то, что происходит, когда уведомление отправляется через консоль администратора Firebase. Вот команда CURL, с которой я начинаю:curl --insecure --header "Авторизация: key=AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM" --header "Content-Type:application/json" -d "{\"notification\":{\"title\": \"заголовок-заметки\",\"тело\":\"тело-заметки\"}}" https://fcm.googleapis.com/fcm/sendВот этот JSON, разобранный, чтобы вам было проще:{ "notification":{ "title":"note-Title", "body":"note-Body" } } В ответе всего два символа:доВот оно, слово "до". (Заголовки сообщают о 400). Я подозреваю, что это связано с отсутствием «кому» в моем JSON. Что можно было бы даже поставить для "к"? У меня темы не определены, и устройства ни для чего не регистрировались. Тем не менее, они по-прежнему могут получать уведомления из панели администратора Firebase.Я хочу попробовать пакет JSON «только данные» из-за удивительного ограничения обработки уведомлений Firebase, согласно которому, если ваше приложение находится на переднем плане, уведомление обрабатывается ВАШИМ обработчиком, но если ваше приложение находится в фоновом режиме. , он ВНУТРЕННЕ обрабатывается службой Firebase и никогда не передается вашему обработчику уведомлений. ЯВНО это можно обойти, если вы отправите запрос на уведомление через API, но ТОЛЬКО, если вы сделаете это только с данными. (Что затем нарушает возможность обработки iOS и Android с одним и тем же сообщением.) Замена «уведомления» на «данные» в любом из моих JSON не имеет никакого эффекта.Хорошо, тогда я попытался найти решение здесь: Firebase Java Server для отправки push-уведомлений на все устройства что, как мне кажется, говорит: «Хорошо, хотя уведомления для всех возможны через консоль администратора… на самом деле это невозможно через API». Обходной путь заключается в том, чтобы каждый клиент подписался на тему, а затем отправил уведомление в эту тему. Итак, сначала код в onCreate:FirebaseMessaging.getInstance().subscribeToTopic("allDevices"); затем новый JSON я отправляю:{ "notification":{ "title":"note-Title", "body":"note-Body" }, "to":"allDevices" } По крайней мере, теперь я получаю реальный ответ от сервера. Ответ JSON:{ "multicast_id":463numbersnumbers42000, "success":0, "failure":1, "canonical_ids":0, "results": [ { "error":"InvalidRegistration" } ] } И это идет с HTTP-кодом 200. Хорошо... согласно https://firebase.google.com/docs/cloud-messaging/http-server-ref код 200 с «InvalidRegistration» означает проблему с токеном регистрации. Может быть? Потому что эта часть документации предназначена для сервера обмена сообщениями. Сервер уведомлений тот же? Не понятно. Я вижу в другом месте, что тема может занять несколько часов, прежде чем она станет активной. Похоже, что это сделало бы его бесполезным для создания новых чатов, так что это тоже кажется неправильным.Я был очень взволнован, когда смог написать с нуля приложение, которое получало уведомления всего за несколько часов, хотя я никогда раньше не использовал Firebase. Кажется, что ему предстоит пройти долгий путь, прежде чем он достигнет уровня, скажем, документации Stripe.com.Итог: кто-нибудь знает, какой JSON предоставить, чтобы отправить сообщение на все устройства, на которых запущено приложение, чтобы отразить функциональность консоли администратора?
A

Anders8

6 лет назад

Ответов: 10

FCM получает MismatchSenderId

У меня есть приложение, которое использует Google FCM для отправки push-уведомлений.Когда я отправляю push-уведомление группе пользователей, я получаю ответ MismatchSenderId для некоторых из них. Хотя у всех пользователей одно и то же приложение. Как некоторые пользователи могут получить ответ об успехе, а другие — MismatchSenderId?Я много исследовал и убедился, что добавил все предварительные условия, необходимые для FCM.Есть предложения?РЕДАКТИРОВАТЬ:Пример ответа:{"multicast_id":5340432438815499122,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]} РЕДАКТИРОВАТЬ 2:Вот код отправки на стороне сервера (PHP):$fields = array ( 'to' => $token, 'data' => $data ); $headers = array ( 'Authorization: key=AIza**************************', 'Content-Type: application/json' ); $ch = curl_init(); curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' ); curl_setopt( $ch,CURLOPT_POST, true ); curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, true ); curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode($fields) ); curl_exec( $ch ); curl_close( $ch ); ОБНОВЛЕНИЕ:Похоже, проблема решена с помощью обновлений SDK. Сейчас я использую последнюю версию com.google.firebase:firebase-messaging:9.6.1, я больше не получаю "MismatchSenderId".
T

TareK Khoury

6 лет назад

Ответов: 31

В чем разница между облачными функциями и функциями Firebase?

Облачные функции и Функции Firebase (или «Облачные функции для Firebase») выглядят одинаково. Пожалуйста, опишите вариант использования каждого из них.Оба используют функции HTTP.В Облачные функции:exports.helloHttp = функция helloHttp (требование, разрешение) { res.send(`Привет, ${req.body.name || 'Мир'}!`); }; И в Firebase Functions:exports.helloWorld = functions.https.onRequest((запрос, ответ) => { response.send("Привет из Firebase!"); }); В чем разница между ними?
M

Muhammad chhota

5 лет назад

Ответов: 4

Можно ли получить идентификатор до того, как он был добавлен?

Я знаю, что в базе данных реального времени я мог получить идентификатор push-уведомления до того, как он был добавлен, вот так: DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference(); String challengeId=databaseReference.push().getKey(); и тогда я мог бы добавить его, используя этот идентификатор.Могу ли я получить его также в Cloud Firestore?
T

Tal Barda

4 года назад

Ответов: 15

Плагин с идентификатором com.google.gms.google-services не найден

Я перешел по этой ссылке, чтобы интегрировать рекламу в свое приложение. Но выдает эту ошибку:Это моя сборка.gradle:apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.example.personal.numbermania" minSdkVersion 10 targetSdkVersion 24 versionCode 1 versionName "1.0" } buildTypes { debug { debuggable true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' compile 'com.google.firebase:firebase-ads:9.6.0' } } объявления не отображаются на реальном устройстве.пожалуйста, помогите мне Это моя ошибка после того, как я обновил путь к классам ошибка
L

Lakshmi

5 лет назад

Ответов: 16

Как добавить SHA-1 в приложение для Android

Я пытаюсь создать динамическую ссылку в Firebase, когда я выбираю приложение для Android, появляется сообщение об ошибке «Добавить SHA-1 в это приложение для Android», я уже добавил учетные данные, но я я не уверен, как именно мне «добавить SHA-1 в приложение»Как это делается?
J

John Sardinha

5 лет назад

Ответов: 15

Какой метод я должен использовать сейчас, поскольку FirebaseInstanceId.getInstance().getToken() устарел

Я хотел бы знать, как правильно получить токен Firebase для отправки push-уведомления теперь, когда getToken() устарел.
B

Bhaskar Jyoti Dutta

4 года назад

Ответов: 2

Firebase App named '[DEFAULT]' already exists (app/duplicate-app)

Hi I am trying to unit test while developing a simple web with AngularJS + Firebase, but I have a problem defining the spec and trying the test runner myProject/test/spec/main.js : describe('Controller: MainCtrl', function() { var MainCtrl, scope beforeEach(module('MainApp')); beforeEach(inject(function ($controller, $rootScope) { scope = $rootScope.$new(); MainCtrl = $controller('MainCtrl', { $scope: scope }) })); it('should....',function(){ expect(true).toBe(true) }) it('should2....',function(){ expect(false).toBe(false) }) }); result: PhantomJS 2.1.1 (Mac OS X 0.0.0) Controller: MainCtrl should.... FAILED Error: [$injector:modulerr] Failed to instantiate module MainApp due to: Firebase: Firebase App named '[DEFAULT]' already exists (app/duplicateapp). However, defining the spec once is not a problem. For example: it('should....',function(){ expect(true).toBe(true) }) I do not know why this is the reason I give a hint to me Here is the project I am developing. https://github.com/parkwookyun/firebase-angular-board
p

parkwookyun

5 лет назад

Ответов: 8

Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly

I have an array of keys which lead to post objects for my social network like so /posts/id/(post info) When I load the posts I load /posts/0 and then /posts/1 etc using the observeSingleEventOfType(.Value) method. I use a lazyTableView to load 30 at a time and it is quite slow. Is there any way I can use one of the query methods or another way of making it faster even if I have to restructure the data in my JSON tree. I am coming from Parse re-implementing my app and so far the experience as been quite good. Just this one thing I am a bit stuck on. Thanks in advance for the help! EDIT: func loadNext(i: Int) { // check if exhists let ideaPostsRef = Firebase(url: "https://APPURL") ideaPostsRef.childByAppendingPath(i.description).observeSingleEventOfType(.Value, withBlock: { (snapshot) in if i % 29 == 0 && i != 0 && !self.hitNull { return } // false if nil // true if not nil if !(snapshot.value is NSNull) { let postJSON = snapshot.value as! [String: AnyObject] print("GOT VALID \(postJSON)") let post = IdeaPost(message: postJSON["message"] as! String, byUser: postJSON["user"] as! String, withId: i.description) post.upvotes = postJSON["upvotes"] as! Int self.ideaPostDataSource.append(post) self.loadNext(i + 1) } else { // doesn't exhist print("GOT NULL RETURNING AT \(i)") self.doneLoading = true self.hitNull = true return } } } This recursive function essentially runs getting the value for key number i from firebase. If it is NSNULL it knows that is the last possible post to load and never does again. If NSNULL doesn't get hit but i % 29 == 0 then it returns as a base case so only 30 posts are loaded at a time (0 indexed). When I set doneLoading to true, tableView.reloadData() is called using a property observer. Here is a sample of what the array I am fetching looks like "ideaPosts" : [ { "id" : 0, "message" : "Test", "upvotes" : 1, "user" : "Anonymous" }, { "id" : 1, "message" : "Test2", "upvotes" : 1, "user" : "Anonymous" } ]
B

Big_Mac

6 лет назад

Ответов: 1

Не удалось получить токен FirebaseInstanceId SERVICE_NOT_AVAILABLE

Я работаю над приложением для Android, оно использует аутентификацию Firebase, базу данных и хранилище. Все работало нормально, пока это сообщение об ошибке не начало появляться в logcat. (Я не вмешивался ни в какие конфиги в консоли Firebase)E/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE это сообщение об ошибке появляется, даже если я прокомментировал весь код, связанный с firebase. Поэтому я не могу продолжить аутентификацию и другие вещи, связанные с firebase. Да, я подключен к Интернету, а также получил новый файл Google-Services.json из консоли Firebase, но это не имеет никакого значения.
M

Masroor

4 года назад

Ответов: 12

Firebase В классе не найдено свойств для сериализации

Я заблокирован при создании базы данных Firebase.Я пытаюсь смоделировать класс. Очень простой класс:package com.glups.model; import com.google.firebase.database.IgnoreExtraProperties; @IgnoreExtraProperties public class AlumnoFB { private String nombre; private String apellidos; private String telefono; private String email; private Boolean tieneWhatsapp; private Boolean tieneTelegram; private Boolean tieneHangouts; private Long formaPago; private Double ratioHora; private Double precioHora; private Double horasCompensadas; public AlumnoFB() { // Default constructor required for calls to DataSnapshot.getValue(User.class) } public AlumnoFB(String nombre, String apellidos, String telefono, String email, Boolean tieneWhatsapp, Boolean tieneTelegram, Boolean tieneHangouts, Long formaPago, Double ratioHora, Double precioHora, Double horasCompensadas) { this.nombre = nombre; this.apellidos = apellidos; this.telefono = telefono; this.email = email; this.tieneWhatsapp = tieneWhatsapp; this.tieneTelegram = tieneTelegram; this.tieneHangouts = tieneHangouts; this.formaPago = formaPago; this.ratioHora = ratioHora; this.precioHora = precioHora; this.horasCompensadas = horasCompensadas; } } это почти как образец класса из Firebase.Пользователь приложения, полученный с помощью getUser(), зарегистрирован в Firebase.Когда я вызываю SetValue:AlumnoFB alumno = new AlumnoFB("", "", "", "", false, false, false, ((Integer)FormaPago.INT_NO_PAGADO).longValue(), 0.0, 0.0, 0.0); mDatabase.child("AlumnoFB").child(ControlClasesFirebase.getUser().getUid()).setValue(alumno) ; Возникло фатальное исключение.06-10 10:17:37.179 13841-13841/com.glups.controlclases E/AndroidRuntime: FATAL EXCEPTION: main Process: com.glups.controlclases, PID: 13841 com.google.firebase.database.DatabaseException: No properties to serialize found on class com.glups.model.AlumnoFB at com.google.android.gms.internal.zzaix$zza.(Unknown Source) at com.google.android.gms.internal.zzaix.zzj(Unknown Source) at com.google.android.gms.internal.zzaix.zzaw(Unknown Source) at com.google.android.gms.internal.zzaix.zzav(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.glups.controlclases.MainActivity$4.onClick(MainActivity.java:305) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5258) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Я проверил типы, и все они принимаются. Что не так?
E

EulerVen

6 лет назад

Ответов: 12

Преобразовать обещание в наблюдаемое

Я пытаюсь осмыслить наблюдаемые. Мне нравится, как наблюдаемые объекты решают проблемы разработки и читабельности. Как я читал, польза огромна.Наблюдаемые в HTTP и коллекциях кажутся простыми. Как я могу преобразовать что-то подобное в наблюдаемый образец.Это из моего служебного компонента для аутентификации. Я бы предпочел, чтобы это работало так же, как и другие HTTP-сервисы в Angular2 - с поддержкой обработчиков данных, ошибок и завершения.firebase.auth (). CreateUserWithEmailAndPassword (электронная почта, пароль) .then (функция (firebaseUser) { // делаем что-нибудь для обновления вашего UI-компонента // передаем объект пользователя в компонент пользовательского интерфейса }) .catch (функция (ошибка) { // Здесь обрабатываются ошибки. var errorCode = error.code; var errorMessage = error.message; // ... }); Любая помощь здесь будет очень признательна. Единственным альтернативным решением, которое у меня было, было создание EventEmitters. Но я думаю, что это ужасный способ делать что-то в разделе услуг
K

Krishnan Sriram

5 лет назад

Ответов: 9

Облачные функции Firebase: разница между onRequest и onCall

Просматривая документы, я обнаружил: ... вы можете вызывать функции напрямую с помощью HTTP-запроса или вызова от клиента. ~ источник там (ссылка в цитате) - это упоминание о функциях. Https.onCall.Но в учебнике , здесь, используется другая функция functions.https.onRequest, так какую из них использовать и почему? В чем разница / сходство между ними?Документация по функциям . Https это здесь.
Q

Qwerty

4 года назад

Ответов: 2

Enabling CORS in Cloud Functions for Firebase

I'm currently learning how to use new Cloud Functions for Firebase and the problem I'm having is that I can't access the function I wrote through an AJAX request. I get the "No 'Access-Control-Allow-Origin'" error. Here's an example of the function I wrote:exports.test = functions.https.onRequest((request, response) => { response.status(500).send({test: 'Testing functions'}); }) The function sits in this url: https://us-central1-fba-shipper-140ae.cloudfunctions.net/testFirebase docs suggests to add CORS middleware inside the function, I've tried it but it's not working for me: https://firebase.google.com/docs/functions/http-eventsThis is how I did it:var cors = require('cors'); exports.test = functions.https.onRequest((request, response) => { cors(request, response, () => { response.status(500).send({test: 'Testing functions'}); }) }) What am I doing wrong? I would appreciate any help with this.UPDATE:Doug Stevenson's answer helped. Adding ({origin: true}) fixed the issue, I also had to change response.status(500) to response.status(200) which I completely missed at first.
A

Andrey Pokrovskiy

5 лет назад

Ответов: 29

Difference between set with {merge: true} and update

In Cloud Firestore there are three write operations: 1) add2) set3) updateIn the docs it says that using set(object, {merge: true}) will merge object with existing one.The same happens when you use update(object) So what is the difference if any? It seems strange that google will duplicate logic.
Z

ZuzEL

4 года назад

Ответов: 5

How do I structure Cloud Functions for Firebase to deploy multiple functions from multiple files?

I would like to create multiple Cloud Functions for Firebase and deploy them all at the same time from one project. I would also like to separate each function into a separate file. Currently I can create multiple functions if I put them both in index.js such as:exports.foo = functions.database.ref('/foo').onWrite(event => { ... }); exports.bar = functions.database.ref('/bar').onWrite(event => { ... }); However I would like to put foo and bar in separate files. I tried this:/functions |--index.js (blank) |--foo.js |--bar.js |--package.json where foo.js isexports.foo = functions.database.ref('/foo').onWrite(event => { ... }); and bar.js isexports.bar = functions.database.ref('/bar').onWrite(event => { ... }); Is there a way to accomplish this without putting all functions in index.js?
j

jasonsirota

5 лет назад

Ответов: 18

тип List<dynamic>не является подтипом типа List<Widget>

У меня есть фрагмент кода, который я скопировал из примера Firestore:Widget _buildBody(BuildContext context) { return new StreamBuilder( stream: _getEventStream(), builder: (context, snapshot) { if (!snapshot.hasData) return new Text('Loading...'); return new ListView( children: snapshot.data.documents.map((document) { return new ListTile( title: new Text(document['name']), subtitle: new Text("Class"), ); }).toList(), ); }, ); } а вот такая ошибкаtype 'List' is not a subtype of type 'List' Что здесь не так?
A

Arash

4 года назад

Ответов: 9

Как переключить приложения с помощью firebase cli?

Это похоже на то, что должно быть довольно легко сделать, но по какой-то причине я проиграл.Я пытаюсь использовать интерфейс командной строки firebase-tools для взаимодействия с моей базой данных. Я могу войти в систему без каких-либо проблем, и когда я набираю firebase list, я получаю список всех моих текущих приложений. Он также сообщает мне, к какому приложению я сейчас подключен.Моя проблема в том, что я хочу подключиться к одному из других приложений. Я выполняю запросы в своем промежуточном приложении, и мне нужно запустить их в своем производственном приложении. Я вижу производственное приложение в списке, но не нахожу способа переключиться на это приложение.Мысли?
w

wvm2008

6 лет назад

Ответов: 9

Следует ли мне добавить google-services.json (из Firebase) в свой репозиторий?

Я только что зарегистрировался в Firebase и создал новый проект. Firebase запросила у меня домен моего приложения и ключ отладки SHA1. Я ввожу эти данные, и он сгенерировал файл google-services.json, который я мог добавить в корень моего модуля приложения.У меня вопрос, следует ли добавить этот файл .json в общедоступное (с открытым исходным кодом) репо. Это что-то, что должно быть секретным, например, ключ API?
h

hitraj47

6 лет назад

Ответов: 2

Облачные функции для Firebase срабатывают вовремя?

Я ищу способ запланировать облачные функции для Firebase или, другими словами, запускать их в определенное время.
a

ahsan

5 лет назад

Ответов: 3

Как преобразовать дату / метку времени Firestore в дату JS ()?

Я пытаюсь преобразовать указанную ниже дату в объект Date () javascript. Когда я получаю его с сервера, это объект Timestamp, Скриншот из консоли Firebase Firestore:Когда я пробую следующее в списке объектов, возвращаемых из firestore: list.forEach(a => { var d = a.record.dateCreated; console.log(d, new Date(d), Date(d)) }) Я получаю такой результат: Очевидно, что все временные метки разные, и не все совпадают с датой 9 сентября 2018 года (а это случилось сегодня). Я также не уверен, почему новая дата (отметка времени) приводит к недопустимой дате. Я немного новичок в JS, я что-то не так делаю с датами или отметками времени?
b

blueether

3 года назад

Ответов: 22

Firebase Storage и Access-Control-Allow-Origin

Я пытаюсь загрузить файлы из Firebase Storage через XMLHttpRequest, но Access-Control-Allow-Origin не установлен на ресурсе, поэтому это невозможно. Есть ли способ установить этот заголовок на сервере хранения? (let [xhr (js/XMLHttpRequest.)] (.open xhr "GET" url) (aset xhr "responseType" "arraybuffer") (aset xhr "onload" #(js/console.log "bin" (.-response xhr))) (.send xhr))) Сообщение об ошибке Chrome: XMLHttpRequest не загружается https://firebasestorage.googleapis.com/[ИЗМЕНИТЬ] Заголовок Access-Control-Allow-Origin отсутствует в запрошенном ресурс. Следовательно, источник 'http://localhost: 3449' недопустим. доступ.
B

Blacksad

6 лет назад

Ответов: 4

Как определить, вошел ли пользователь в Firebase?

Я использую api узла firebase в своих файлах javascript для входа в Google.firebase.initializeApp(config); let provider = new firebase.auth.GoogleAuthProvider(); firebase.auth().signInWithPopup(provider); Это работает нормально, и пользователь может войти в систему со своими учетными данными Google. Когда пользователь снова посещает страницу, всплывающее окно открывается снова, но, поскольку он уже вошел в систему, всплывающее окно закрывается, не требуя какого-либо взаимодействия со стороны пользователя. Есть ли способ проверить, есть ли уже вошедший в систему пользователь, прежде чем запрашивать всплывающее окно?
J

Jophin Joseph

6 лет назад

Ответов: 10

Ошибка: приложение Firebase "[ПО УМОЛЧАНИЮ]" не создано - вызовите Firebase App.initializeApp ()

У меня есть база данных firebase, связанная с двумя приложениями, одно из которых является приложением для iOS, а другое - веб-приложением, закодированным в node.js, который является базовым алгоритмом, который устанавливает данные в базу данных. Когда я запускаю алгоритм, я сталкиваюсь с- Ошибка: не создано приложение Firebase «[ПО УМОЛЧАНИЮ]» - вызовите Firebase. App.initializeApp (). при ошибке (родной) в R (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:22:335) в (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:20:68) в Object.c [как база данных] (/Users/dd/Desktop/Code/NODE/node_modules/firebase/app-node.js:21:447) на объекте. (/Users/dd/Desktop/Code/NODE/Bot.js:24:25) в Module._compile (module.js: 570: 32) в Object.Module._extensions..js (module.js: 579: 10) в Module.load (module.js: 487: 32) в tryModuleLoad (module.js: 446: 12) в Function.Module._load (module.js: 438: 3) в Module.runMain (module.js: 604: 10) при запуске (bootstrap_node.js: 394: 7) при запуске (bootstrap_node.js: 149: 9) в bootstrap_node.js: 509: 3 dd-mac: NODE dd $ Может ли кто-нибудь помочь?
S

Samuel Aubin

5 лет назад

Ответов: 18

Не удалось найти действительный GoogleService-Info.plist в вашем проекте

Когда я запускаю свой быстрый код 3.2 с Xcode 9 beta 4, я получаю вот такую ​​ошибку:*** Завершение работы приложения из-за неперехваченного исключения 'com.firebase.core', причина: '[FIRApp configure]; (FirebaseApp.configure () в Swift) не удалось найти действительный GoogleService-Info.plist в вашем проекте. Пожалуйста, загрузите один из https://console.firebase.google.com/.'У меня уже есть файл GoogleService-Info.plist с точно таким же названием, и он действителен.Есть ли пробная версия firebase или что-то в этом роде?
a

adam eliezerov

4 года назад

Ответов: 25

Как обновить «массив объектов» с помощью Firestore?

Сейчас я пробую Firestore, и я застрял на очень простом: «обновление массива (также известного как поддокумент)».Моя структура БД очень проста. Например:proprietary: "John Doe", sharedWith: [ {who: "first@test.com", when:timestamp}, {who: "another@test.com", when:timestamp}, ], Я пытаюсь (безуспешно) протолкнуть новые записи в массив объектов shareWith.Пробовал:// With SET firebase.firestore() .collection('proprietary') .doc(docID) .set( { sharedWith: [{ who: "third@test.com", when: new Date() }] }, { merge: true } ) // With UPDATE firebase.firestore() .collection('proprietary') .doc(docID) .update({ sharedWith: [{ who: "third@test.com", when: new Date() }] }) Ничего не работает. Эти запросы перезаписывают мой массив.Ответ может быть простым, но я не смог его найти ...
n

nerotulip

4 года назад

Ответов: 15

Не удалось завершить компиляцию: тип программы уже присутствует: com.google.android.gms.internal.measurement.zzabn

При компиляции моего проекта я получаю следующее сообщение об ошибке:Program type already present: com.google.android.gms.internal.measurement.zzabn Message{kind=ERROR, text=Program type already present: com.google.android.gms.internal.measurement.zzabn, sources=[Unknown source file], tool name=Optional.of(D8)} илиD8: Program type already present: com.google.android.gms.internal.measurement.zzabo Со следующей трассировкой стека в журнале Gradleat com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104) at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)\\nat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626) at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) at java.lang.Thread.run(Thread.java:745) Caused by: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\0.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\4.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\6.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\7.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\8.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\9.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\10.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\12.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\13.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\14.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\17.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\18.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\19.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\20.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\21.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\22.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\23.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\24.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\25.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\26.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\27.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\28.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\29.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\30.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\31.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\32.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\34.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\39.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\40.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\44.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\45.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\46.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\47.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\48.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\49.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\51.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\52.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\53.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\55.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\56.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\57.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\58.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\59.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\83.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\84.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\85.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\86.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\87.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\88.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\89.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\90.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\91.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\92.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\93.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\94.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\95.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\96.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\97.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\100.jar, D:\Android\appName\app\build\intermediates\transforms\dexBuilder\debug\101.jar at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:124) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:109) at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:101) at com.android.build.gradle.internal.transforms.ExternalLibsMergerTransform.transform(ExternalLibsMergerTransform.kt:123) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221) at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217) at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) ... 48 more Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:76) at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:45) at com.android.tools.r8.D8.run(D8.java:67) at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:107) ... 53 more Caused by: com.android.tools.r8.utils.AbortException at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:77) at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:58) at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:67) ... 56 more
J

Jack Wilson

4 года назад

Ответов: 8

2022 WebDevInsider