标签: capacitor-plugin

Capacitor v3 插件不适用于 android 版本

我正在使用电容器 v3 测试版,在 web 和 iOS 中工作没有问题,但无法运行 android 应用程序。构建完成,但运行应用程序时出现此错误:

E/Capacitor/Console: File: http://localhost/vendor-es2015.js - Line 41296 - Msg: ERROR Error: Uncaught (in promise): Error: "Storage" plugin is not implemented on android
    Error: "Storage" plugin is not implemented on android
Run Code Online (Sandbox Code Playgroud)

为了解决这个错误,我删除了存储插件并替换为离子/存储插件。但是当我使用其他插件(例如键盘)时,会出现错误消息,指出键盘插件未在 android 上实现。

所以我认为 Android 构建或项目配置存在一些问题。

这些是我的 package.json 中的 de node 依赖项

"@capacitor/android": "^3.0.0-beta.6",
"@capacitor/core": "^3.0.0-beta.1",
"@capacitor/storage": "^0.3.1",
Run Code Online (Sandbox Code Playgroud)

还有我的capacitor.config.json文件

{
    "appId": "net.flowww.me",
    "appName": "FLOWwwMe",
    "bundledWebRuntime": false,
    "npmClient": "npm",
    "webDir": "www",
    "cordova": {}
}
Run Code Online (Sandbox Code Playgroud)

iOS 版本适用于此配置。

android ionic-framework capacitor capacitor-plugin

10
推荐指数
2
解决办法
2204
查看次数

电容器 3.0 升级插件“未实现”异常(Nx Monorepo)

我们在 nx monorepo 中使用 Angular,我们已经在其中使用 Capacitor 2.4 半年了。目前我们只使用安卓平台。现在,我们需要升级到 Capacitor 3.0。应用程序本身再次运行,但是,只要我使用任何插件,我总是会收到以下异常:ERROR Error: "Device" plugin is not implemented on android

这对于我尝试使用的每个插件都是一样的。所以,如果我使用存储插件,我只会为“存储”得到相同的例外。我详细地遵循了电容器迁移指南 ( https://capacitorjs.com/docs/v3/updating/3-0 ),但我不知道我哪里出错了。一般来说,只要我将使用电容器插件的任何代码注释掉,该应用程序现在就可以工作。使用插件的代码在升级之前确实有效。

根据迁移指南,我import '@capacitor/core';在 main.ts 文件中添加了,虽然我也尝试将它放在 app.module.ts 中,但也没有成功。我已经按照此处的建议为整个应用程序(根)和 nx-capacitor 应用程序(用@nxtend-capacitor 添加的电容器应用程序)安装了每个插件https://nxtend.dev/docs/capacitor/getting-started/ . 我还更新了 package.json 文件的电容器 cli、电容器核心和电容器 android 版本。此外,根据android升级指南,我还更新了gradle和android gradle插件。我也相应地更新了 Android 变量。

老实说,我对 Capacitor 没有太多经验或深入了解,我知道 Capacitor 3 到目前为止仍处于 Beta 阶段。但是,也许有人已经偶然发现了这个问题并找到了解决方案。我也不确定,这个问题是否可能是通过将这种 monorepo 方法与 nx. 有人在使用 Nx monorepo 时将 Capacitor 升级到 3.0 吗?

作为参考,这是电容器应用程序的当前 package.json:

{
  "name": "app-cap",
  "dependencies": {
    "@capacitor-community/electron": "^1.3.2",
    "@capacitor/android": "^3.0.0-rc.0",
    "@capacitor/app": "^0.3.6",
    "@capacitor/camera": "^0.4.3",
    "@capacitor/cli": …
Run Code Online (Sandbox Code Playgroud)

android capacitor capacitor-plugin

8
推荐指数
2
解决办法
3325
查看次数

是否可以将 Capacitor 与 NextJS 13 的新“/app”结构一起使用?

我正在努力为我的 NextJS 13 应用程序使用Capacitor ,该应用程序使用新的App router

在使用 NextJS13 项目的新“/app”结构构建应用程序时,是否可以以某种方式创建“out”文件夹和“index.html”?

我阅读了Capacitor 文档并看过类似这样的博客,但没有成功。

cross-platform next.js capacitor capacitor-plugin next.js13

8
推荐指数
0
解决办法
1054
查看次数

将 iOS 项目添加到现有 Ionic 5 项目时,未找到“package”的 podspec

我为 Ionic 和 Capacitor 构建了一个 Capacitor 插件,并将其发布到 NPM - 称之为它test1。然后我在我的 Ionic 5 项目中使用它并通过以下方式成功添加一个新的 Android 项目:

ionic build 
ionic cap add android 
ionic cap sync
Run Code Online (Sandbox Code Playgroud)

测试了一下,它有效。然后我尝试通过以下方式添加 iOS:

ionic build 
ionic cap add ios 
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

`[!] No podspec found for `Test1` in `../../node_modules/test1```
Run Code Online (Sandbox Code Playgroud)

但它失败了。我不明白为什么,因为Test1Plugin.podspec根目录中有一个具有相关依赖项的文件和一个ios/Podfile具有相关依赖项的文件。我还确保这两个文件都发布到 npm。

我尝试将文件名更改.podspecTest1.podspec,但这是完全相同的问题。

我很困惑,希望有人能给我一些指示,因为我已经在这方面有一段时间并尝试了一切。

ionic-framework podspec capacitor ionic5 capacitor-plugin

7
推荐指数
0
解决办法
782
查看次数

使用电容器共享插件共享文件

我需要分享一个 PDF 文件。我使用 CapacitorJS 来实现本机功能。

let shareRet = await Share.share({
  title: 'See cool stuff',
  text: 'Really awesome thing you need to see right meow',
  url: 'http://ionicframework.com/',
  dialogTitle: 'Share with buddies'
});
Run Code Online (Sandbox Code Playgroud)

这是从例子中得来的。但我的数据是 base64 字符串。有没有办法以附件形式分享?

javascript capacitor capacitor-plugin

6
推荐指数
2
解决办法
5089
查看次数

在哪里添加 Capacitor 的 GoogleService-Info.plist

我发现了很多相关问题,但没有关于Capacitor的具体问题。

当涉及到Capacitor时,我们是否需要添加 GoogleService-Info.plist 到:

  1. ios/App或者
  2. ios/App/App

Firebase 控制台这样说... 在此输入图像描述

capacitor capacitor-plugin

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

如何禁用电容器插件中的屏幕截图仅适用于少数页面而不适用于整个应用程序

这是一个离子电容器角度项目,我试图在其中构建一个电容器插件,以便我只能为所需的页面/屏幕禁用屏幕截图。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);在 MainActivity 内部onCreate()方法中使用过,它可以工作,但它禁用了整个应用程序的屏幕截图,这不是预期的结果。

MainAcitivity.java:

public class MainActivity extends BridgeActivity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);

    // Initializes the Bridge
    this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
      // Additional plugins you've installed go here
      // Ex: add(TotallyAwesomePlugin.class);
      add(Contacts.class);
      add(Screenshot.class);
    }});
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我有电容器插件“screenshot-plugin”,其中我有两种方法可以“设置”和“清除”项目中特定页面/屏幕的标志。

截图.java:

@NativePlugin
public class Screenshot extends Plugin {

    @PluginMethod
    public void echo(PluginCall call) {
        String value = call.getString("value");

        JSObject ret = new JSObject();
        ret.put("value", value);
        call.success(ret);
    }

    @PluginMethod
    public …
Run Code Online (Sandbox Code Playgroud)

java capacitor capacitor-plugin

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

从 Capacitor 构建的应用程序使用 Azure 登录会在应用程序外部打开一个新的登录窗口

我正在使用电容器 3.0 通过 React 构建本机 iOS 应用程序。该应用程序的用户应首先登录。

我希望用户的登录由 Microsoft Azure ActiveDirectory B2C 处理,并按照本教程进行设置: https ://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-react

此外,Microsoft 还提供了 Microsoft 身份验证库(MSAL,https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/login-user.md),登录时会重定向到由 microsoftonline.com 管理的屏幕以获取用户名和密码。这是微软的标准登录界面,可以定制品牌,但我没有做出这样的改变。只需使用标准的 MS UI。

此重定向在 Web/桌面浏览器中运行良好,因为它会在同一页面中打开 Microsoft 登录屏幕,而无需打开新的浏览器窗口。

但是,当从 Capacitor 构建的 iOS 应用程序内访问登录时,用户会被带到外部浏览器进行登录,这会破坏用户体验。当常规 React Web 浏览器(非 Capacitor)不是这种情况时,关于为什么 Capacitor 会启动浏览器进行登录,有什么想法吗?

reactjs azure-ad-b2c capacitor capacitor-plugin

5
推荐指数
0
解决办法
405
查看次数

电容器仅向 1 个平台添加插件

我想添加插件ios-swipe-back,但不幸的是它 \xe2\x80\x99s 导致 Android 上出现问题。

\n

我不需要 android 上的 xe2x80x99t 插件,但是只要我想重新同步,从 gradle 手动删除它就会重新创建它

\n

有没有办法只为 1 个平台指定插件?

\n

我看到了科尔多瓦的这个,但不知道电容器是否有类似的东西

\n

如何仅在一个 Ionic 平台上添加插件?

\n

谢谢

\n

capacitor capacitor-plugin

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

Capacitor 插件不将参数传递给 java

我正在使用此插件在 Ionic React/Capacitor 项目中实现 Google Play 游戏服务。

但是,当我调用 时GameServices.showLeaderboard("abcdefghijklmnopqr");,logcat 显示以下内容:

05-09 07:44:51.544 15437 15524 V Capacitor/Plugin: To native (Capacitor plugin): callbackId: 129018517, pluginId: GameServices, methodName: showLeaderboard
05-09 07:44:51.544 15437 15524 V Capacitor: callback: 129018517, pluginId: GameServices, methodName: showLeaderboard, methodData: {}
05-09 07:44:51.545 15437 15502 W GameServices: showLeaderboard called without providing leaderboardId
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它methodData是空的。

我完全不了解 java(因此我使用 Capacitor),但这是我能找到的唯一一段看起来远程相关的代码,android\src\main\java\GameServices.java在 GitHub 链接中。

@PluginMethod()
    public void showLeaderboard(final PluginCall call) {
        final String leaderboardId = call.getString("leaderboardId");
        if (leaderboardId == …
Run Code Online (Sandbox Code Playgroud)

java android google-play-games capacitor capacitor-plugin

2
推荐指数
1
解决办法
945
查看次数

使用主函数时电容器文件系统返回错误

我使用电容器 3 创建了一个新应用程序,在这个应用程序中我使用文件系统来执行一些功能。我创建了一个服务来处理与文件系统相关的所有内容,但是当我使用这些功能时遇到了一些问题。

当使用 Android 11 使用该函数创建目录时,mkdir()出现以下错误:

Unable to create directory, unknow reason.

同样在 Android 11 上,当我尝试仅使用它创建文件时,writeFile()它会返回以下错误:

FILE_NOTCREATED

对于 Android 10 及更低版本,该mkdir()函数可以正常工作,但该writeFile()函数会导致应用程序崩溃而不会出现任何错误。另外,如果我尝试更改Diretory.ExternalStorageDiretory.External我可以在 Android 11 中创建一个目录,但在写入文件时它仍然会崩溃。

使用 Android 11,我尝试编写一个txt包含简单字符串和小型 Base64 字符串的文件。使用时Diretory.External我可以在新文件中写入base64字符串,但是使用时Diretory.ExternalStorage我收到FILE_NOTCREATED错误。

我完成了所有配置并按照文档中的步骤进行设置AndroidManifest.xml

已经在不同 Android 版本的模拟器和手机上进行了多项测试。

测试用writeFile()

Android 11
base64 + Diretory.External = success
string + Diretory.External = crash
base64 + Diretory.ExternalStorage = error
string + ExternalStorage …
Run Code Online (Sandbox Code Playgroud)

ionic-framework capacitor capacitor-plugin

2
推荐指数
1
解决办法
5284
查看次数