小编bar*_*ecu的帖子

将快照侦听器添加到集合 Firestore

所以我对 firebase 有点陌生,我正在开发一个 android 应用程序。我想做的是:我想创建一个在后台运行的服务,它可以收听 firestore 中的整个集合(例如“消息”),一旦将文档添加到集合中,我想检查文档是否包含特定值,以及是否推送通知。伪代码概要:

   messages.attachlistener(onNewDocument(doc) -> {

      if(doc.getString(username) == my_username)
      {
          send_notification(doc.getString(message));
          cache_message_for_later();
          delete_doc_from_table();
       }
    };
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可以将侦听器附加到集合?我只在文档中找到了文档侦听器。如果可能的话,这样的监听器甚至是可行的性能明智的吗?(我的想法:这个服务会一直在后台运行,但是文档在缓存后会被删除,所以表大小不会太大,它可能会平衡?)

performance android android-service firebase google-cloud-firestore

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

获取库播放列表 Artwork Apple Music API

我目前正在尝试阅读所有用户库播放列表。我需要的是以下内容:ID、名称、描述、歌曲和艺术品。端点"https://api.music.apple.com/v1/me/library/playlists?limit=100"返回以下响应:

{
  "data": [
    {
      "id": "p.oOzAa4gIlaQaBVx",
      "type": "library-playlists",
      "href": "\/v1\/me\/library\/playlists\/p.oOzAa4gIlaQaBVx",
      "attributes": {
        "name": "Drake",
        "description": {
          "standard": ""
        },
        "hasCatalog": true,
        "canEdit": true,
        "playParams": {
          "id": "p.oOzAa4gIlaQaBVx",
          "kind": "playlist",
          "isLibrary": true,
          "globalId": "pl.u-Zmblx9rU02m2DXJ"
        },
        "dateAdded": "2017-10-30T21:39:45Z"
      }
    },
etc...
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,尽管 API 文档将艺术作品指定为属性 ( https://developer.apple.com/documentation/applemusicapi/libraryplaylist/attributes),但艺术作品属性并不存在,我尝试使用,?include=artwork即使它是属性而不是关系,但没有奏效。任何想法如何检索艺术品?如果我无法从苹果音乐 API 获得它,还有其他方法可以获得艺术品吗?我已经坚持了一段时间,所以任何帮助表示赞赏!

android json apple-music apple-musickit

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

BannerAd.dispose 不工作 Flutter Admob

我目前正在尝试在我的应用程序中显示一个 admob 横幅,但是有两个页面我不希望显示横幅(现在我只测试设置路由),并且在横幅上调用 dispose 不会隐藏它。

我试过的:

  1. 为每个小部件创建横幅并在小部件onDispose方法的覆盖中调用 dispose方法
  2. 创建一个创建横幅并保存对它的引用的广告管理器类,并从所述类中调用一个函数,该函数init在页面内的横幅上调用 dispose我不希望横幅显示在上面。
  3. 我目前的解决方案:一个观察者类,在推送时显示横幅,如果路线名称与我正在寻找的内容相匹配,则隐藏横幅。

到目前为止,这些方法都没有成功:(我做错了什么?我错过了什么吗?

观察者类:

class AdmobObserver extends RouteObserver<PageRoute<dynamic>> {

  static ValueNotifier<bool> isBannerAdShowing = ValueNotifier<bool>(false);

  BannerAd _myBanner = BannerAd(
    adUnitId: AdManager.bannerAdUnitId,
    size: AdSize.banner,
    listener: (MobileAdEvent event) {
      if (event == MobileAdEvent.loaded) {
        isBannerAdShowing.value = true;
      }
      else if (event == MobileAdEvent.failedToLoad) {
        isBannerAdShowing.value = false;
      }
    },
  );

  @override
  void didPush(Route route, Route previousRoute) {
    super.didPush(route, previousRoute);
    if (route.settings.name == '/settings') {
      _myBanner?.dispose();
      isBannerAdShowing.value = false;
    } else …
Run Code Online (Sandbox Code Playgroud)

admob observable dart flutter firebase-admob

6
推荐指数
1
解决办法
1402
查看次数

不能同时旋​​转和移动

我目前正在 Unity 3D 中开发一款 FPS 射击游戏。我对 Unity 还很陌生,而且我的玩家移动脚本遇到了一些问题。单独来看,一切似乎都正常,我可以自由旋转和移动播放器,但是当我尝试同时执行这两个操作时,我的播放器似乎锁定并且不会旋转。

有时跳跃或移动到地形上的较高地面似乎可以解决问题,但是我在禁用重力、没有碰撞器且玩家位于地面上方的情况下进行了一些检查,因此问题似乎出在脚本上。我还做了一些调试,Rotate() 代码确实运行了,只是旋转量似乎没有改变。

这是玩家移动脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class PlayerMov : MonoBehaviour
{
    [SerializeField]
    private Camera cam;
    [SerializeField]
    private float speed = 5f;
    [SerializeField]
    private float looksensitivity = 4f;

    [Header("Camera View Lock:")]
    [SerializeField] //min and max amount for looking up and down (degrees)
    private float lowlock = 70f;
    [SerializeField]
    private float highlock = 85f;

    private Rigidbody rb;
    private float currentrotx; //used later for calculating relative rotation
    public Vector3 velocity; …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine game-physics

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

Flutter:当应用程序在后台时使用路径提供程序

我目前正在尝试在我的 Flutter 应用程序中实现 FCM 和本地通知。我已经成功配置了 FCM 和普通通知的本地通知,但我还有一种不同类型的通知,我想用图像显示,当我的应用程序在前台时,通知显示没有错误,但是当我终止时应用程序/将其移动到后台我在尝试使用路径提供程序保存图像时出现异常。

例外:

MissingPluginException(No implementation found for method getApplicationDocumentsDirectory on channel plugins.flutter.io/path_provider)
Run Code Online (Sandbox Code Playgroud)

我假设发生此错误是因为当应用程序不在前台时路径提供程序方法通道已关闭,我可以做些什么来解决这个问题?或者,如果flutter_local_notifications插件不需要位图的文件路径,我是否可以实现保存图像并以不同的方式获取路径以在后台工作(没有路径提供程序)?(我实际上想要显示的是来自这样一个链接的图像:https : //is1-ssl.mzstatic.com/image/thumb/WNUBiv2P6YSklHn9eA5nlg/1000x1000bb.jpeg

保存图像:

 static Future<String> saveImage(Image image) {
    final completer = Completer<String>();
    image.image.resolve(ImageConfiguration()).addListener(ImageStreamListener((imageInfo,_) async {
      final byteData = await imageInfo.image.toByteData(format: ImageByteFormat.png);
      final pngBytes = byteData.buffer.asUint8List();
      final fileName = pngBytes.hashCode;
      final directory = await getApplicationDocumentsDirectory();
      final filePath = '${directory.path}/$fileName';
      final file = File(filePath);
      await file.writeAsBytes(pngBytes);
      completer.complete(filePath);
    }));
    return completer.future;
  }
Run Code Online (Sandbox Code Playgroud)

notifications image flutter firebase-cloud-messaging flutter-method-channel

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