20201104のiOSに関する記事は12件です。

Apple Developer と Google Play の公式テスターについて

概要

久々に調べて毎回ググるのが面倒だからここにまとめる。
iOS/Androidのアプリ開発で、公式のテスター登録について次の内容となる。

※一部公式の内容を抜粋しているため、アップデートがあった際に詳細が異なる可能性があり、この記事をそのまま鵜呑みにせず必ず公式ページを確認するようにお願いします。

TestFlight

 lockup-hero-large_2x.png

内部テスター

  • チームでAccount Holder、Admin、App Manager、Developer、Marketingのいずれかの役割を担うメンバーを最大100人まで追加可能。

外部テスター

  • Eメールアドレスを使用するか、任意のユーザーに対してAppのテストに参加する機会を開くパブリックリンクを有効にして共有することで、最大10,000人の外部テスターを招待可能。

Play Console

 maxresdefault.jpg

内部テスト版

  • メールアドレスを使用して内部テスターのリストを作成できます。内部テストには、アプリごとに最大 100 人のテスターが参加可能。

クローズドテスト版

  • メールアドレス
    • クローズド テスト版では、メールアドレスを使ってテスターのリストを作成でき、合計 200 件のリストを作成でき、各リストには最大 2,000 人のユーザーを登録が可能。
    • リストは 1 トラックにつき最大 50 件作成が可能。

補足

上記は一部の情報のみ抜粋しているためさらに詳細は公式ページを確認してください。

 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Flutter] [Navigator] 次画面へ複数の値を渡す方法

Navigatorによる画面遷移時に次画面へ値を渡す方法です。
SQLiteやSharedPreferencesで保持する必要はなく、ライトに値を渡したいときにご参考になればと思います。

渡したい値が1つの場合

変数 hogeを次画面に渡す例

第3引数のargumentsに変数 hoge をセットします。

遷移元

String hoge = 'hoge';
Navigator.pushReplacementNamed(
  context,
  '/next_path',
  arguments: hoge
);

遷移先

final String hoge = ModalRoute.of(context).settings.arguments;

渡したい値が複数ある場合

変数 hogeId, fuga を次画面に渡す例

渡したい値をまとめたクラスを作成し、そのオブジェクトを渡します。
名前はなんでも良いので、ViewAToBArguments というクラス名で以下のように作成するとします。

ViewAToBArguments.dart
class ViewAToBArguments {
  final int hogeId;
  final String fuga;

  ViewAToBArguments(this.hogeId, this.fuga);
}

第3引数のargumentsに ViewAToBArguments オブジェクトをセットします。

遷移元

int hogeId = 1;
String fuga = 'fuga';
Navigator.pushReplacementNamed(
  context,
  '/next_path',
  arguments: ViewAToBArguments(hogeId, fuga)
);

遷移先

final ViewAToBArguments viewAToBArguments = ModalRoute.of(context).settings.arguments;
int hogeId = viewAToBArguments.hogeId;
String fuga = viewAToBArguments.fuga;
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ8

MVVMの基礎概念と実用についてそれぞれわかりやすかった記事
http://ugaya40.hateblo.jp/entry/model-mistake
https://blog.77jp.net/development-rules-for-mvvm-that-a-beginner-should-be-conscious-of

CombineでHTTP通信を実装する
https://dev.classmethod.jp/smartphone/iphone/use-combine-for-http-networking/

Swift4.1からnil要素を除いた配列を生成するArrayのflatMapメソッドは
compactMapメソッドにリネームされたと言う話
https://qiita.com/amarillons/items/e897ca495470963249fe

WebViewの戻るボタン(イベントをフックする方法など)
https://asahima.hatenablog.jp/entry/2017/01/15/000000

Swiftの予約語一覧
https://qiita.com/ezura/items/d011c9b13c70055b6e57

RxSwift入門
https://qiita.com/k5n/items/17f845a75cce6b737d1e

Swiftのアニメーションライブラリ一覧
https://github.com/IBAnimatable/IBAnimatable
https://github.com/MengTo/Spring
https://github.com/HeroTransitions/Hero

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ7

Lottie(アニメーション)
https://lottiefiles.com/

UIBezierPath(線の描画)
https://program-life.com/648 
https://dev.classmethod.jp/smartphone/iphone/play-uibezierpath-1/

Swiftのunittest
https://qiita.com/s-harada/items/5a8c12b0c456d155ba53

AutoLayoutの制約を使ったアニメーション
https://qiita.com/roana0229/items/6a3272151262ea89e9ff

CABasicAnimation(重い処理のアニメーションに向いている)
https://i-app-tec.com/ios/cabasicanimation.html
https://developers.cyberagent.co.jp/blog/archives/16638/

Appleのアプリ公開まで
https://qiita.com/kenny_J_7/items/92378e2a09bee6080677

SkeltonView
https://github.com/Juanpe/SkeletonView

TabPageViewController
(保守されなくなったPagingMenuControllerの代替になりそう)
https://techblog.zozo.com/entry/tab_page_viewcontroller

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ6

RxSwiftとMVVMの登場人物
https://gist.github.com/mironal/9eead7a5d812174cec238d68615f1dd6

RxSwiftに苦手意識がある人向け
https://blog.yokurin.app/entry/2019/04/30/180022

PromiseKit(非同期処理)
https://github.com/mxcl/PromiseKit

SVProgressが使えなくなる
https://qiita.com/edm17/items/a4b7163201c779895de3

KickstarterのMVVM
https://qiita.com/muukii/items/045b12405f7acff1a9fd

SwiftUIチートシート
https://fuckingswiftui.com/

UXデザイントレンド
https://note.mu/ryoheey_0417/n/nd427ffef1bc3#weGx6

流体インターフェイスを構築するアニメーション
https://medium.com/@nathangitter/building-fluid-interfaces-ios-swift-9732bb934bf5

レポジトリパターン
https://speakerdeck.com/naoty/repository-pattern-in-swift

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ5

Macのストレージ圧迫のシステム欄の犯人
https://qiita.com/reikubonaga/items/48987d35fb10b7de6bcc

iOSのアーキテクチャ比較サンプル
https://medium.com/@rockname/clean-archirecture-7be37f34c943

Macのカーソル強制バインディング
https://qiita.com/saboyutaka/items/489ed2ffe4c1187b65a7#%E4%BB%96%E3%81%AB%E3%82%82%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D

Macのカーソル移動ショートカットなど
https://kukka.me/mac-arrowkey/

SwiftUIでMapKit
https://www.hackingwithswift.com/books/ios-swiftui/advanced-mkmapview-with-swiftui
https://www.dev4app.com/archives/58346305-how-to-focus-google-maps-camera-on-user-39-s-current-location-at-startup-using-swiftui-views.html

iOSのライブラリの実装例やオープンソースのアプリを紹介しているサイト
https://iosexample.com/

ScrollViewを使う上での用語の解説、ビューの移動のさせ方など
https://qiita.com/shiba1014/items/ca0ac8d3a4a82a857bba

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ4

Flutterチャットアプリを支える技術
https://kwmt27.net/2020/03/26/the-technology-behind-flutter-chat-app/

(可愛い)Flutter入門
https://priceless-bardeen-f24139.netlify.app/

良いコードの書き方
https://qiita.com/alt_yamamoto/items/25eda376e6b947208996

RxSwift入門 非同期処理 
https://qiita.com/k5n/items/98aaf84fc164f7a5502c#observablecreate

Swiftにおけるclassとstructの使い分け
https://cockscomb.hatenablog.com/entry/choosing-between-classes-and-structures

RxSwiftでsubscribeをネストされると困る
https://qiita.com/yimajo/items/393ec9b3b445ec170ce4

Flutterのconditional statementの使い方
https://stackoverflow.com/questions/49713189/how-to-use-conditional-statement-within-child-attribute-of-a-flutter-widget-cen

Swift5 ニコニコ動画やLineにあるようなスクロールによって開閉するヘッダー
https://qiita.com/Hajime-Ito/items/2ef143b02ba65d43001d

Swiftでスクレイピング
https://code-schools.com/swift-scraping/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ3

SwiftでCore MIDI
https://qiita.com/yohki/items/cb8820026730c7729a2e

Flutterのパフォーマンス改善
https://note.com/shogoyamada/n/n3b752f2adf2e

ARKitの入門者向け記事まとめ
https://techpartner.jp/blog/category/ar%e3%82%a2%e3%83%97%e3%83%aa%e9%96%8b%e7%99%ba

booleanを返却するメソッド名、変数名の付け方
https://tinyurl.com/yyrp4a5x

iOS14で追加されるUIコンポーネントの使い方
https://qiita.com/MaShunzhe/items/a4db494b1c07c9e5b5ba

SwiftUI LazyVGrid/LazyHGrid
https://qiita.com/H_Crane/items/2e8e883685b976ec8555

Swift、Dateの王道
https://qiita.com/rinov/items/bff12e9ea1251e895306

JSONデータからモデルを自動生成
https://dev.classmethod.jp/articles/quicktype/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ2

FlatIcon
https://www.flaticon.com/search?word=Covid&style_id=15
このサイト1つでアイコンに困らなくなる
色もサイズも自分好みで取得可能

売れるアプリにするためにした工夫(UXノウハウ)
https://note.com/toconakis_tech/n/nda6cae85e410

いらすとやでわかるDI(iOSじゃないですが)
https://qiita.com/keidroid/items/7f0112502a08e2107c67

メモリリークをXcodeでチェックする
https://dev.classmethod.jp/articles/ios-memory-leak-check-and-prevent-190508/

associatedTypeのあるprotocolにキャストする
https://medium.com/finc-engineering/casting-to-protocol-having-associatedtype-e5854994a97f

Flutter Providerの使い方と解説
https://itome.team/blog/2019/12/flutter-advent-calendar-day7/

Xcodeのビルドを早くする話
https://t.co/j5Yq9fIrQO?amp=1
アンチパターンが書かれている

ARKitのための3D数学
https://qiita.com/kboy/items/775633fe3fd6da9c5fb6

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iOS記事まとめ

Flutter学習手順
https://medium.com/flutter-jp/flutter-learning-c5640c5f05b9

SwiftUIの@がついてるやつのまとめ的な記事
https://qiita.com/shiz/items/6eaf87fa79499623306a

iOSとmacOSアプリで知っておくべき違い
https://techblog.timers-inc.com/entry/menu_for_macos_catalyst

DispatchWorkitemによる非同期処理のキャンセル処理
https://qiita.com/umireon/items/f2cf44621070e749d73e

SceneKit(ARKit)のパーティクルシステムについての紹介記事
https://qiita.com/kboy/items/a1cd8dff40dff45d5b9e

↑の詳細パラメータなど
https://appleengine.hatenablog.com/entry/2017/08/23/202915

Xcode12のアップデート内容
https://qiita.com/shira-shun/items/5363bdb3f1d7424f7329

未経験から1100万DL超えまで行けた僕のアプリの作り方
https://zenn.dev/aa36841289911/articles/79e394cc45416aa1908e

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Vue3ベースのIonic-Vue(β)で実機デバッグするまで。

Vue3が発表されてIonic-Vueがβで公開されて少し経ったのでどんなもんか触ってみました。
諸事情あってWindowsで開発環境を構築していますがMacでもほぼ差異なく動きました

ionic/cliをglobalにinstallします。

npm install -g @ionic/cli@testing

my-appはプロジェクト名なので任意に

ionic start my-app tabs --type vue --tag vue-beta

1分程待つと

Your Ionic app is ready! Follow these next steps:

- Go to your new project: cd ./vocbook
- Run ionic serve within the app directory to see your app in the browser
- Run ionic capacitor add to add a native iOS or Android project using Capacitor
- Generate your app icon and splash screens using cordova-res --skip-config --copy
- Explore the Ionic docs for components, tutorials, and more: https://ion.link/docs
- Building an enterprise app? Ionic has Enterprise Support and Features: https://ion.link/enterprise-edition
ionic serve

すると無事動作は確認できました!

image.png

Androidアプリとしての開発をしたいので一旦 npm run build します
ここも特に問題なく正常終了。dist配下に諸々生成されるので

npx cap add android

または

capacitor.cmd add android

でAndroidのネイティブプロジェクトを作ります。

? What platform would you like to add? android
> capacitor.cmd add android
√ Installing android dependencies in 24.90s
√ Adding native android project in: 
√ Syncing Gradle in 652.80μp
√ add in 24.97s
√ Copying web assets from dist to android\app\src\main\assets\public in 112.61ms
√ Copying native bridge in 3.06ms
√ Copying capacitor.config.json in 4.43ms
√ copy in 146.39ms
√ Updating Android plugins in 9.65ms
  Found 0 Capacitor plugins for android:
√ update android in 42.47ms

Now you can run npx cap open android to launch Android Studio

Android Studioで開けといわれるので確認します

npx cap open android

で自動的にAndroid Studioが起動するのでgradleのsyncなんかを済ませて…

実機で動作しました!

Screenshot_20201104-110441.png

まだ全然詳細は見れていないですがmanifestのパーミッションがもりもりになっていて、使う予定がないものもがっつり入っているので検証時は楽ですがリリース時には見直しが必要そうです。

    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Camera, Photos, input file -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- Geolocation API -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:name="android.hardware.location.gps" />
    <!-- Network API -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Navigator.getUserMedia -->
    <!-- Video -->
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- Audio -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

ほぼドキュメント通りでハマりどころもなく実機検証までできたので、このペースでβが外れてくれるとうれしいですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Swift5]スプラッシュ画面の作成方法

スプラッシュ画面とは

アプリケーションを起動した時に表示される画面をスプラッシュ(Splash)画面、またはローンチスクリーン(Launch Screen)と呼びます。アプリケーションにおいては、ユーザーが操作することのできない数少ない画面です。

例を挙げるとtwitterやLineのアイコンが中央に表示されるアノ画面ですね。

デフォルトではアプリケーションを立ち上げた時に真っ白な画面が表示されるようになっております。

作成方法

スプラッシュ画面はXcodeのLaunchScreen.storyboardから作成できます。
image.png

このようにviewに色をつけてみましょう。そうすると。

image.png

アプリケーションを立ち上げたときのviewの色が変わりました。基本的な作成方法は以上です。
文字を入力したい場合などはlabelを貼り付けて編集すればOKです。

注意点

ひとつ注意点ですが、LaunchScreen.storyboardとControllerは紐付けられないようで、紐付けてビルドするとエラーが発生します。

なので、storyboardを使わずにコードでスプラッシュ画面を作成したい方、また動的なスプラッシュ画面を作成したい方は、新規ファイルを作成しSplash.storyboard(例)を作成し、作成したstoryboardとControllerの紐付けをおこない、project/general/App Icon and Launch Images/Launch Screen Fileで作成したstoryboard名を選択してあげればControllerと紐付きます。

最後に

私も今回初めてスプラッシュ画面を触ったので至らない点がありましたらコメントにてお声がけいただければと思います。最後まで読んでいただきありがとうございます!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む