小编Dim*_*ira的帖子

Firebase Auth - 获取提供商ID

我正在使用以下代码来检测身份验证提供程序并正确注销

static func logOut() {
    let auth = FIRAuth.auth()!
    let provider = auth.currentUser?.providerID
    switch provider! {
        case "Facebook": FBSDKLoginManager().logOut()
        case "Google": GIDSignIn.sharedInstance().signOut()
        case "Twitter": Twitter.sharedInstance().sessionStore.logOutUserID(TWTRAPIClient.withCurrentUser().userID!)
        default:
            print("Unknown provider ID: \(provider!)")
            return
    }
    try! auth.signOut()
}
Run Code Online (Sandbox Code Playgroud)

但提供商始终是"Firebase".我究竟做错了什么?0_o当我登录twitter时,该代码抛出"Facebook".提前致谢

UPD:是的,我实际上可以存储身份验证提供程序UserDefaults,但可能是Firebase错误.我正在使用Firebase SDK 3.5.2

ios firebase firebase-authentication swift3

15
推荐指数
3
解决办法
1万
查看次数

必须声明元素自适应图标

我使用Android Studio 2.3.3稳定并尝试为Android O创建自适应图标

我创建了包含以下内容的文件夹mipmap-anydpi-v26和文件ic_launcher.xml

<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@color/colorAccent"/>
    <foreground android:drawable="@drawable/ic_launcher_adaptive"/>
</adaptive-icon>
Run Code Online (Sandbox Code Playgroud)

但它说"元素自适应图标必须声明".目标SDK和构建工具都设置为26.

它成功构建,但我没有任何设备来测试它,所以我的问题是 - 它有效吗?

PS:前景是有效的VectorDrawable

android android-8.0-oreo

13
推荐指数
1
解决办法
6386
查看次数

在Task <T>完成之前,正确暂停协程的方法

我最近潜入Kotlin协同程序因为我使用了很多Google的库,所以大部分工作都是在Task类中完成的

目前我正在使用此扩展来暂停协程

suspend fun <T> awaitTask(task: Task<T>): T = suspendCoroutine { continuation ->
    task.addOnCompleteListener { task ->
        if (task.isSuccessful) {
            continuation.resume(task.result)
        } else {
            continuation.resumeWithException(task.exception!!)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但最近我见过这样的用法

suspend fun <T> awaitTask(task: Task<T>): T = suspendCoroutine { continuation ->
    try {
        val result = Tasks.await(task)
        continuation.resume(result)
    } catch (e: Exception) {
        continuation.resumeWithException(e)
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么区别,哪一个是正确的?

UPD:第二个例子不起作用,idk为什么

android kotlin kotlin-coroutines

10
推荐指数
1
解决办法
2523
查看次数

FCM推送高优先级主题带来延迟

我将推送消息发送到订阅一个主题的小组设备(少于5个),优先级参数设置为

高度优先.FCM尝试立即传递高优先级消息,允许FCM服务在可能的情况下唤醒休眠设备并打开与应用服务器的网络连接.例如,具有即时消息,聊天或语音呼叫警报的应用程序通常需要打开网络连接并确保FCM毫不拖延地将消息传递给设备.仅当消息对时间至关重要且需要用户立即进行交互时才设置高优先级,但要注意,将消息设置为高优先级会导致电池消耗超过普通优先级消息.

但是,当我将设备置于IDLE状态时,它会带来很大的延迟.在Nougat 7.1延迟超过10分钟.这种类型的推动需要不到10秒的延迟.

设置time_to_live为0仅在Marshmallow上解决问题.牛轧糖仍然失败.

所以,我只看到3个可能的问题原因

  1. 发送到主题的消息不能是高优先级.但是向每个设备发送独立消息会增加应用服务器负载.我需要从Firebase数据库加载新的令牌,因此结果将是 - 对5个用户而不是1个用户的10个http请求.

  2. 应用必须在白名单中.但是根据文档,如果我使用FCM,这是不可接受的.我不想要它,因为它会导致电池耗尽.

  3. 错误?https://github.com/firebase/quickstart-android/issues/100

如果真正的原因是第一个,那么为什么它没有在文档中描述?

android firebase firebase-cloud-messaging android-7.0-nougat android-7.1-nougat

8
推荐指数
1
解决办法
4428
查看次数

Firebase JavaScript SDK和react-native-firebase有什么区别

我正在尝试使用Firebase(Cloud Firestore)作为本机应用程序,以存储我的JSON对象。

我见过人们在他们的应用程序中使用Firebase (npm install firebase),而其他人则使用react-native-firebase。

大多数博客都说Firebase本身是用于Web的,因此它们的本机响应支持是“无/少”。而其他一些博客和firebase官方博客则说Firebase支持本地本机。

我不确定为我的本机项目选择哪个库,它们之间有什么区别。

firebase react-native google-cloud-firestore react-native-firebase

8
推荐指数
1
解决办法
1294
查看次数

注释必须调用super的接口函数

我正在创建界面,其中的一些功能有一个正文.这是必需的,实现此接口的类必须在执行其他代码之前调用super覆盖函数.我怎样才能做到这一点?

interface Watcher {
    fun funWithoutBody()

    fun startWatching() {
        //do some important stuff which must be called
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin

7
推荐指数
1
解决办法
1840
查看次数

Android牛轧糖:提交了太多NetworkRequests

在Android Nougat 7.1.1上连续使用应用程序后,它开始在后台崩溃,直到手动启动。从Firebase,我得到以下日志:

Caused by java.lang.IllegalArgumentException: Too many NetworkRequests filed
android.os.Parcel.readException (Parcel.java:1688)
android.os.Parcel.readException (Parcel.java:1637)
android.net.IConnectivityManager$Stub$Proxy.pendingListenForNetwork (IConnectivityManager.java:2460)
android.net.ConnectivityManager.registerNetworkCallback (ConnectivityManager.java:3127)
com.XXX.XX.location.GPSControl$Companion.setInitialized (GPSControl.java)
__null__.getGApiClient (GPSControl.java)
__null__.setGApiClient (GPSControl.java)
__null__.setConnMan (GPSControl.java)
__null__.setSf (GPSControl.java)
__null__.init (GPSControl.java)
__null__.getPI (GPSControl.java)
__null__.triggerLocation (GPSControl.java)
__null__.triggerLocation$default (GPSControl.java)
__null__.access$getInitialized$p (GPSControl.java)
com.XXX.XX.KGL.afterLoginSetup (KGL.java)
com.XXX.XX.KGL.onCreate (KGL.java)
android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1025)
android.app.ActivityThread.handleBindApplication (ActivityThread.java:5460)
android.app.ActivityThread.-wrap2 (ActivityThread.java)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1556)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:154)
android.app.ActivityThread.main (ActivityThread.java:6176)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:888)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:778)
Run Code Online (Sandbox Code Playgroud)

我检查了android marshmallow源代码,它不包含引发此错误的代码,但是master分支却包含了,因此我们可以得出结论,此错误是特定于Nougat的。

    private void enforceRequestCountLimit() {
        synchronized (mUidToNetworkRequestCount) {
            int networkRequests = mUidToNetworkRequestCount.get(mUid, 0) …
Run Code Online (Sandbox Code Playgroud)

android android-7.0-nougat android-7.1-nougat

5
推荐指数
1
解决办法
1353
查看次数

如何在Flutter插件中添加桥接头

我正在尝试创建Flutter插件,该插件使用Swift并具有一个pod依赖项(NearbyMessages

首先,我已将其添加到 .podspec

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = 'flutter_nearby_messages'
  s.version          = '0.0.1'
  s.summary          = 'A new flutter plugin project.'
  s.description      = <<-DESC
A new flutter plugin project.
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'email@example.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'
  //************ I've added this lines *************** …
Run Code Online (Sandbox Code Playgroud)

xcode ios cocoapods podspec flutter

5
推荐指数
1
解决办法
549
查看次数

Firebase身份验证.谷歌+ Facebook =崩溃

我已经成功实施了我的应用程序的iOS版Google登录版(Google + Twitter + Facebook版Android工作).现在我正在尝试添加FB登录,但它似乎与谷歌签到冲突.在我看到WebView中成功的FB登录屏幕并按OK - 应用程序崩溃.

Error Domain=com.google.GIDSignIn Code=-4 "(null)"
2016-09-01 18:51:55.745 APP_NAME[4574:] <FIRAnalytics/INFO> Firebase Analytics enabled
2016-09-01 18:52:10.039 APP_NAME[4574:3352620] -canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
2016-09-01 18:52:10.075 APP_NAME[4574:3352620] -canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
(lldb) bt
* thread #1: tid = 0x33282c, 0x014dbd54 libswiftCore.dylib`swift::_swift_getClass(void const*), queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x014dbd54 libswiftCore.dylib`swift::_swift_getClass(void const*)
    frame #1: 0x014d2e62 libswiftCore.dylib`swift_getObjectType + 8
    frame #2: 0x0013dba0 APP_NAME`@objc AppDelegate.application(UIApplication, open : URL, sourceApplication …
Run Code Online (Sandbox Code Playgroud)

ios facebook-login firebase firebase-authentication swift3

4
推荐指数
1
解决办法
720
查看次数

Google Awareness API v9.6缺失

我对新的地图样式功能感兴趣,这个功能在9.6 Google Play Services版本中添加,但我也在使用Awareness API.在我的build.gradle

compile 'com.google.android.gms:play-services-maps:9.6.1'
compile 'com.google.android.gms:play-services-contextmanager:9.6.1'
compile 'com.google.android.gms:play-services-location:9.6.1'
Run Code Online (Sandbox Code Playgroud)

和其他一些游戏服务/ firebase模块.以前v9.4工作,但现在我得到了Failed to resolve: com.google.android.gms:play-services-contextmanager:9.6.1 BTW,所有其他9.6版本的lib解析正确.我也尝试使用9.6.0和9. +,没有任何效果.

请不要建议添加, compile 'com.google.android.gms:play-services:9.6.1' 因为它会大大增加编译时间.

UPD:刚刚发现,活动识别包含在位置包中,所以我不需要意识.但这不是答案

android google-play-services google-awareness

3
推荐指数
1
解决办法
550
查看次数