所以我对 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
我目前正在尝试阅读所有用户库播放列表。我需要的是以下内容: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 获得它,还有其他方法可以获得艺术品吗?我已经坚持了一段时间,所以任何帮助表示赞赏!
我目前正在尝试在我的应用程序中显示一个 admob 横幅,但是有两个页面我不希望显示横幅(现在我只测试设置路由),并且在横幅上调用 dispose 不会隐藏它。
我试过的:
onDispose方法的覆盖中调用 dispose方法init在页面内的横幅上调用 dispose我不希望横幅显示在上面。到目前为止,这些方法都没有成功:(我做错了什么?我错过了什么吗?
观察者类:
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) 我目前正在 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) 我目前正在尝试在我的 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
android ×2
flutter ×2
admob ×1
apple-music ×1
c# ×1
dart ×1
firebase ×1
game-physics ×1
image ×1
json ×1
observable ×1
performance ×1