1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Capacitor V3 を 試してみる

Last updated at Posted at 2021-06-28

Capacitor のV3が出ていたので、Installing Capacitor を試してみる。

以前試したものはこちら。
Capacitor を 試してみる(router & ionicなし)
Capacitor を 試してみる(router & ionicあり)

ベースプロジェクトを作る

Vueプロジェクトをベースにしてみます。

Vue CLI を入れる

yarn cache clean; yarn global add @vue/cli

Vue プロジェクト生成&プロジェクトへ移動

# Vue プロジェクト作成
vue create test

# 今回は以下のように選んでみる
# ? Please pick a preset: Manually select features
# ? Check the features needed for your project: Choose Vue version, Babel, TS, PWA, Router, Vuex, CSS Pre-processors, Linter
# ? Choose a version of Vue.js that you want to start the project with 3.x
# ? Use class-style component syntax? No
# ? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? Yes
# ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
# ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with dart-sass)
# ? Pick a linter / formatter config: Basic
# ? Pick additional lint features: Lint on save
# ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
# ? Save this as a preset for future projects? No

cd test

Capacitor

インストール

yarn add @capacitor/core
yarn add --dev @capacitor/cli

初期化

npx cap init test com.xxxxx.test

add 前に build して webDir(dist) を生成

yarn run build

※ Nuxtの場合

yarn generate

Android / iOS 追加

yarn add @capacitor/android; npx cap add android
yarn add @capacitor/ios; npx cap add ios

Toast 追加(Toastを使う場合)

yarn add @capacitor/toast; npx cap sync

変更を加える

src/components/HelloWorld.vue
<template>
  <div class="hello">
+   <button @click="toast">Toast</button>
    <h1>{{ msg }}</h1>
    <p>
      For a guide and recipes on how to configure / customize this project,<br>
      check out the
      <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
    </p>
    <h3>Installed CLI Plugins</h3>
    <ul>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa" target="_blank" rel="noopener">pwa</a></li>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
      <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript" target="_blank" rel="noopener">typescript</a></li>
    </ul>
    <h3>Essential Links</h3>
    <ul>
      <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
      <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
      <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
      <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
      <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
    </ul>
    <h3>Ecosystem</h3>
    <ul>
      <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
      <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
      <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
      <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
      <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
    </ul>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
+ import { Toast } from "@capacitor/toast";

export default defineComponent({
  name: 'HelloWorld',
  props: {
    msg: String,
+ },
+ methods: {
+   async toast() {
+     await Toast.show({
+       text: "Toast"
+     });
+   }
  },
});
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

変更反映

yarn run build; npx cap copy

※ Nuxtの場合

yarn generate; npx cap copy

Android / iOS 開発環境を開く

npx cap open android
npx cap open ios

iOS上で確認してみる

toastボタンを押下すると、Toastが表示される。

ShowToast.png

Vue.js / Capacitor がそれぞれ正しく動作することを確認できた。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?