プログラミングと音楽とアニメとiPhoneとiPadとMacとAndroidとLogicとギターとテニスと車

アプリ開発系の勉強メモやTipsなどを中心に他いろいろと書いていきます。

flutter doctorを実行するとAndroid Studioで「Flutter plugin not installed; this adds Flutter specific functionality.」と出る問題の対処方法

以前は問題なかったが、久しぶりにflutter doctorコマンドを実行すると、Android StudioでFlutterとDartプラグインが認識されていない様子になった。

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel unknown, v1.17.0, on Mac OS X 10.15.6 19G2021, locale ja-JP)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
[!] Android Studio (version 4.1)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.52.1)
[!] Connected device
    ! No devices available

! Doctor found issues in 2 categories.

Android StudioでPreferences / Plugins を確認すると、FlutterとDartはインストール済みとなっている。試しにこれらをインストールし直してみても上記のエラーが消えなかったので情報を探していたら、以下のissueを発見し、この通りにln -s リンク元 リンク名としてシンボリックリンクを作成すれば解決できた。

https://github.com/flutter/flutter/issues/68429

ln -s ~/Library/Application\ Support/Google/AndroidStudio4.1/plugins ~/Library/Application\ Support/AndroidStudio4.1

WWDC20基調講演のメモ

iOS14

  • App Library
    • ホームスクリーンの最後のページに追加された
    • アプリを自動的にカテゴリ別に見やすく表示してくれる
  • Widgets
    • スマートスタック
    • ウィジェットの内容を自動的に切り替えも可能
    • ホームスクリーンに追加や並び替えも可能
  • Picture in Picture
    • ピンチで拡大表示も可能
    • 画面の外へスワイプすると音声は再生され続ける
    • フルスクリーンで再生可能
    • ×をタップして終了も可能
  • Siri
    • 今まではSiriを呼び出すとフルスクリーンのUIだったが、画面下の方でSiriが起動してアプリを呼び出せるようになった。アプリのUIを邪魔せずシームレスな呼び出しが可能になった
    • オフラインの翻訳機能(アプリ?)も追加した、安全に翻訳して会話ができる
  • Message
    • 大丈夫な相手(メッセージ毎?)をピンで固定できるようになった
    • ミー文字の表現が増えた、フェイスカバーも増えた
    • グループ機能でメンションやインライン返信もできるようになった
  • Maps
    • 全米でのロールアウトが完了
    • 最適な自転車ルートを選択可能になった
    • 階段を使わないルートも可能になった、対応都市は準備拡大
  • CarPlay
    • 世界では新車の80%で利用可能になった
    • iPhoneで車のロック解除可能になった
    • iPhoneを紛失してもiCloudで無効にできる
    • iOS13でも使えるようにする予定
  • App Clips
    • アプリケーションの一部の機能を提供したもの
    • AppleIDでサインインできる
    • 支払いにApple Payが使える
    • NFCタグ、QRコードにも対応
    • 既存のアプリの一部機能をApp Clipsとして提供可能
      • 速く起動できるように10MB以下のサイズに抑える必要がある
      • App Storeからフルバージョンをダウンロードも可能なフローを用意できる

iPadOS 14

  • 写真のサイドバーが新しくなった
  • その新しいサイドバーをほかのアプリでも使えるようになった
  • Siri
    • 右下に表示されるようになり、アプリを利用しながら使えるようになった
    • 電話着信の場合でもアプリを邪魔しないUIになった(iPhoneも同様)
  • Universal Searchで検索可能になった
  • Apple Pencil
    • 検索やテキスト入力でもScribeできるようになった

watchOS 7

  • コンプリケーション
    • コンプリケーションを作成するのにネイティブのSwiftUIも使える
    • 自作の文字盤を教諭したりできる
  • Maps
    • iOS14と同様に自転車ルートに対応
  • Workout
    • ランニングだけでなくダンスのような腕の動きが一定ではない場合にも計測できるようになった
  • Health
    • 睡眠トラッキングができるようになった
    • 睡眠スケジュール、就寝前のルーティンを設定できるようになった
    • 手洗いの時間を計測できるようになった
      • オーディオ機能を使って計測している

AirPods

  • バイス間のシームレスな接続切り替えが可能
  • 空間オーディオ
    • サラウンド
    • センサーによる音場の固定など

Privacy

  • 全ての製品にプライバシー対策をこうじている
    • Data minimization(データ量の最小化)
      • 三者がアクセスできる情報量を最小化する
    • On-device intelligence(デバイス上の知能)
      • 情報をサーバに送らず、なるべくデバイス上で処理し、データを収集させない
    • Security protections(セキュリティ)
      • プライバシー保護にセキュリティは不可欠
    • Transparency and control(透明性とコントロール
      • データを提供するかどうか、ユーザーが目的を理解した上で選べるようにする
  • 位置情報
    • 正確な位置情報と共有するか、だいたいの位置情報を共有するか選べるようになる
  • マイク・カメラ
    • 現在または最近の使用状況が分かる
    • 使用中はステータスバーに表示される(右上っぽい)
  • Tracking control
  • App privacy
    • アプリケーションをダウンロードする前に、プライバシーポリシーを知ることはできなかった
    • 食品なら成分表示があるので購入前に確認できるのと同じようにする
    • デベロッパに実態を申告してもらい、その結果を開示し、データをどの程度集めているかを可視化する
    • 他社への提供があるかも含めて
    • 開示先はApp Storeの製品ページの一番下の方
    • App Storeで実施する

Home

macOS Big Sur

  • デザインを刷新
  • サウンドも再マスタリング
  • サイドバーやツールバーも新しくなった
  • アニメーションにはMetalを採用している
  • コントロールセンターが使えるようになった
  • ウィジェットも新しくなり、デベロッパは独自のウィジェットも開発可能
  • Message
    • mac上でミー文字の作成も可能
  • Maps
    • iOS14の機能をすべて取り込んだ
    • aroundのフルスクリーン表示も可能
  • Mac Catalyst
    • 新しいMapsの移植にもCatalystを使った
    • Catalystを使ったネイティブアプリも増加中
  • Safari
    • Chromeより50%速く表示できる
    • プライバシーレポートボタンで個人情報の状態(ITPの状態も?)が分かる
    • MacApp StoreにはSafariの機能拡張(Safari Extensions)のカテゴリーが加わる
    • 機能拡張を使うサイトを指定したりできる
    • Safari自体に翻訳機能も搭載された
    • スタートページやタブのカスタマイズが可能
  • Apple Silicon
    • 開発の背景
      • きっかけはiPhoneからはじまりワットあたりの性能を伸ばすことにフォーカスした
      • RetinaiPadにはカスタムチップが必要だった
    • AppleSilicon搭載macでは最初からすべてのアプリがネイティブで作られている
    • AppleSilicon搭載macへの既存アプリの移行は、新しいXcodeで再コンパイルすることでAppleSiliconに最適化できる
    • Universal 2
    • Rosseta2
      • すぐに対応できない既存のmacOS用アプリでもAppleシリコンに移行して使えるようにするためのエミュレーション技術
    • 新しいiPhoneiPadのアプリも動かせる
    • 仮想化技術

WWDC20のメモ

WWDC20のURL

https://developer.apple.com/wwdc20/

Special Event Keynote and Platforms State of the Union / 特別イベントの基調講演と廉造プラットフォームと状態

100+ Engineering Sessions / 100回以上のエンジアリングセッション

Appleのエンジニアによる技術やデザインに特化した動画で、次世代アプリの構築方法を学べる。 ビデオコレクションは毎日掲載され、ウェブまたはiPhoneiPadApple TVのApple Developerアプリで視聴可能。

Learn more

All-New Developer Forums / 全く新しい開発者フォーラム

新しくなったApple Developer Forumsでは、1,000人以上のAppleのエンジニアと交流できる。 誰でもフォーラムを検索して閲覧したり、Apple IDを持ってサインインしたりして、さまざまな開発トピックについて質問できる。

Learn more

1-on-1 Developer Labs (by appointment) / 1on1デベロッパーラボ(予約制)

Appleプラットフォームの最新の進歩を支えてきたエンジニアから、新機能の実装方法についての詳細な情報を直接聞くことができる。 対象となるメンバーは、サインインしてスケジュールからラボを選択し、質問を入力して送信するだけ。 利用人数に制限あり。リクエストは審査され、あなたのステータスをEメールで案内あり。

Learn more

Apple Design Awards / アップルデザイン賞

世界中の何百万人もの開発者たちが作ったアプリケーションやゲームは、人々の日常生活に良い影響を与えてきた。 今年のApple Design Awardを受賞した開発者たちを称えましょう!

See last year’s winners(昨年の受賞者)

Conversations at WWDC20 / WWDC20での会話

リサ・ジャクソン氏とエリック・ホルダー前司法長官との対談。

Learn more

【更新】【続】AdMobのGDPR(EUの一般データ保護規則)に対応する

前回 の続きで、AdMobがオープンソースで公開したconsent SDKの実装を具体的に見ていく。

consent SDKのドキュメントに出てくる用語について簡単にメモ。

  • Personalized ads
    要は従来の広告と同類のもので、ターゲティングされている広告。

  • NonPersonalized ads
    ターゲティングされていない広告。ターゲティングの目的ではCookie広告識別子は使用しないが、フリークエンシーキャップ、レポート集計、不正に対応するためにはターゲティングの目的ではCookieまたは広告識別子を使用する。

参照
Personalized and non-personalized ads - AdMob Help

続きは、更新途中。
ざっくりだが、consent SDKを使ってやることは以下のような感じになる様子。

  • Personalizedのステータスが取得できた場合は、従来通りの広告リクエスト。

  • NonPersonalizedのステータスが取得できた場合は、@{@"npa": @"1"}のようなパラメータをセットして広告リクエスト。

  • Unknownのステータスが取得できた場合は、同意ダイアログを出してユーザーの同意を取得する処理。

続き

とりあえず、iOSのconsent SDKの内容からは、 アプリのユーザーから同意を取得する方法としては下記の2つが紹介されている。

  • Googleが用意している同意フォーム用クラスPACConsentFormを利用する
  • Publisher-managed consent collectionの方法を利用して、独自の同意フォームを用意する

PACConsentFormの同意フォームはあくまでもGoogleを利用して収益化するのに適したメッセージ内容となっているため、 Consent SDKに含まれているconsentform.htmlファイルを編集して、自分のアプリに適した同意メッセージに変更するようにとドキュメントに書かれていた。

Publisher-managed consent collectionの方法は、AdMob管理画面のEUユーザーの同意>広告技術プロバイダの選択>広告技術プロバイダのカスタム グループ12社を超えて指定している場合は、この方法を使うようにと書かれている。 また、ドキュメントの最下部の注釈(Note: )で、メディエーションでもこれと同じ方法で同意を得る必要があると書かれている。

いずれの方法にしても、ちゃんと対応しようとするとconsentform.htmlを参考にするなどして、自分のアプリに適したプライバシーポリシーも用意する必要そうだ。

そこで、EEAでのアプリや広告の配信を制限して、一時的な対応とする場合に必要になりそうな情報とか。(何もしないよりはましな気がする)

  • iTunesConnect、Google Play ConsoleでアプリのEEA対象国での配信を停止しておく
  • AdMob管理画面 > メディエーショングループ > ターゲット地域でEEA対象国を除外しておく
  • あと、ついでにGoogle Analyticsとか利用していれば、そっちも規約更新とか確認しておく

欧州経済領域(EEA)

欧州連合加盟国の参照元

https://ja.wikipedia.org/wiki/欧州連合加盟国

GDPRについての参考資料

http://www.meti.go.jp/policy/it_policy/privacy/downloadfiles/18datewg08.pdf

AdMobのGDPR(EUの一般データ保護規則)に対応する

今日5/22になってGDPRに対応したアプリ向けSDKとか設定の案内メールが届いたので、早速設定してみる。

AdMob利用している人はたぶんメールが届いてるはずなので、メール内の「ADMOBにログイン」というリンクを開いて設定を進める。
以下、一応手順。

  1. https://apps.admob.com からAdMob アカウントにログイン
  2. [ブロックの管理] > [EU ユーザーの同意]の順にクリック
  3. 表示される「EU ユーザーの同意」ページで、必要に応じて以下の設定

※ 2 の[ブロックの管理]は画面左側のメニュー内にあったが、もしAdMob管理画面のバージョンをV2にアップデートしていなければ、場所が異なるかもしれない。

「EU ユーザーの同意」

ここでは、以下の広告技術プロバイダの選択でどちらかを選択するとなっているが、デフォルトでは一般によく使用される広告技術プロバイダのグループが選択された状態になっている。広告技術プロバイダを選択する理由が特になければ、デフォルトのままで良さそう。

広告技術プロバイダの選択
  • 一般によく使用される広告技術プロバイダのグループ
  • 広告技術プロバイダのカスタム グループ
同意取得の設定

ここに書いてあるように、アプリのユーザーから同意を取得するための機能を提供するSDKオープンソースで公開してくれたようなので、あとはドキュメントに沿ってアプリに実装していく。実装が終わったら、当然ながらアプリのバイナリをアップロードして、ストアに公開という作業が必要になる。

メディエーションの場合は独自のダイアログを利用してくださいと書かれており、ちょっと手間がかかりそう。

また実装の詳細がわかったら記事を更新します。

続き http://travitu.hatenablog.jp/entry/2018/05/23/002146