小编Nea*_*eat的帖子

如何在范围存储中保存pdf?

在引入范围存储之前,我使用下载管理器在我的应用程序中下载 pdf 并从 获取 pdf getExternalStorageDirectory,但由于范围存储,我无法再使用getExternalStorageDirectory它,因为它已被弃用。我决定放弃下载管理器以及它下载公共目录中的文件,而是使用改造来下载 pdf 文件。我知道我可以在 Android Manifest 中使用该requiredLegacyStorage标签,但它不适用于 Android 11,所以我没有使用它。

这是我的代码

fun readAndDownloadFile(context: Context) {
        readQuraanInterface?.downloadFile()
        Coroutines.io {
            file = File(context.filesDir,"$DESTINATION_DIRECTORY/$FILE_NAME$FILE_EXTENSION")
            if (file?.exists() == true) {
                renderPDF()
                showPdf(mPageIndex, Direction.None)
            } else {

                Log.i("new","new0")
                val response = readQuraanRepository.downloadPdf()
                if (response.isSuccessful) {
                    Log.i("new","new00 ${file!!.path} ${response.body()?.byteStream().toString()}")
                    response.body()?.byteStream()?.let {
                        file!!.copyInputStreamToFile(
                            it
                        )
                    }
                    Log.i("new","new1")
//                    renderPDF()
//                    showPdf(mPageIndex, Direction.None)
                } else {
                    Log.i("new","new2")
                    Coroutines.main {
                        response.errorBody()?.string()
                            ?.let { readQuraanInterface?.downloadFailed(it) }
                    }
                }
            }

        }

    }

    private …
Run Code Online (Sandbox Code Playgroud)

android file-storage kotlin retrofit scoped-storage

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

错误凭证和注册令牌都属于同一个 Firebase 项目

我知道最近有人问过这个问题,但我无法弄清楚。我浏览了这篇文章Firebase 消息/不匹配凭证但没有一个答案对我有用我什至浏览了文档https://firebase.google.com/docs/cloud-messaging/send-message#admin_sdk_error_reference但它没有对我有意义

以下是我的云功能

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp(functions.config().firebase);

function cleanupTokens(response, tokens) {
  // For each notification we check if there was an error.
  const tokensDelete = [];
  response.results.forEach((result, index) => {
    const error = result.error;
    if (error) {
      console.error("Failure sending notification to", tokens[index], error);
      if (
        error.code === "messaging/invalid-registration-token" ||
        error.code === "messaging/registration-token-not-registered"
      ) {
      }
    }
  });
  return Promise.all(tokensDelete);
}

exports.sendNotifications = functions.firestore
  .document("medical_history/{patientId}")
  .onCreate(async snapshot => {
    const …
Run Code Online (Sandbox Code Playgroud)

javascript firebase google-cloud-functions firebase-cloud-messaging

6
推荐指数
0
解决办法
839
查看次数

如何在 FCM 中使用 apns-collapse-id?

我知道这个问题已经被问过很多次了,但没有一个答案对我有用。有些问题甚至没有答案。

我尝试在 ios 上捆绑或分组类似的通知。我正在使用 FCM Cloud Functions 来触发通知。

以下是我尝试过的方法

const payload = {
        notification: {
          title: "Your medical history is updated" + Math.random(),
          tag: "MedicalHistory",
        },
        data: {
          click_action: "FLUTTER_NOTIFICATION_CLICK",
          sound: "default",
          status: "done",
        },
      };

      const patchedPayload = Object.assign({}, payload, {
        apns: {
          headers: {
            "apns-collapse-id": "MedicalHistory",
          },
        },
      });

      const options = {
        priority: "high",
        collapseKey: "MedicalHistory",
      };


await admin
          .messaging()
          .sendToDevice("MY_TOKEN", patchedPayload, options);
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用

const payload = {
        notification: {
          title: "Your medical history is updated" + …
Run Code Online (Sandbox Code Playgroud)

apple-push-notifications ios firebase firebase-cloud-messaging

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

在 iOS 中配置多个方案导致口味不匹配

我有一个 Flutter 项目,我创建了两个单独的 firebase 项目(不是同一个 firebase 项目中的两个应用程序)。我正在为我的 iOS 应用程序设置两种不同的方案。我有以下命令可以相应地使用不同的项目

1. flutter run --release --flavor prod 2.flutter run --release --flavor dev

对于开发风格,它需要使用在 firebase 中创建的开发项目,但它使用生产 firebase 项目,反之亦然。

该配置适用于 Android 而不适用于 iOS。

我正在关注以下 iOS 设置教程

https://www.tengio.com/blog/multiple-firebase-environments-with-flutter/ https://www.youtube.com/watch?v=gdqnxcV7_FY&feature=emb_logo

如下图所示,我是如何设置 Google 服务文件的。我已经检查了很多次,并且通过将 prod 放入 dev 并没有使这些文件不匹配,反之亦然。

以下是我的脚本

在此处输入图片说明

在此处输入图片说明

我还将 Google 服务文件添加到目标。我尝试为 Google 服务文件删除目标的复选标记,但仍然存在相同的问题。

我注意到的一件事是,如果我在 dev google services 文件之后将 prod google services 文件添加到我的 iOS 项目中,它总是使用 prod 环境,而不管风格如何。如果我在 prod 之后添加 dev 那么它会使用 firebase 的 dev 环境,而不管它的味道如何。即使在 xcode 中更改命令行构建选项对我也不起作用。

ios firebase flutter

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

如何为 Codemagic 设置自动构建?

我想CodemagicDevelop分支上有合并时设置自动构建

这是我设置的

在此处输入图片说明

但是在合并时不会发生构建。

flutter codemagic

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