💡

【Flutter】忘れてしまいがちな設定

2022/03/24に公開

ATT(Application Tracking Transparency)対応

IOSについては他アプリケーションを横断した、情報収集のための端末キー情報を該当アプリに紐付け可能かユーザーに確認を行う必要があります。

導入方法

以下パッケージを使用して確認ポップアップの処理を作成します。
https://pub.dev/packages/app_tracking_transparency

pubspec.yamlの編集

dependenciesセクションにapp_tracking_transparencyの定義を追加

pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  app_tracking_transparency: ^2.0.2+1

info.plistの編集

ダイアログのメッセージを定義する。

ios/Runner/info.plist
    <key>SKAdNetworkItems</key>
      <array>
        <dict>
          <key>SKAdNetworkIdentifier</key>
          <string>cstr6suwn9.skadnetwork</string>
        </dict>
      </array>
    <key>NSUserTrackingUsageDescription</key>
    <string>許可されると表示される広告が最適化されます。</string>

ダイアログの呼び出し

main関数呼び出し時に該当ポップアップアップ呼び出しよりを追加する。

main.dart
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  ・・・

  try {
    if (await AppTrackingTransparency.trackingAuthorizationStatus ==
        TrackingStatus.notDetermined) {
      await Future.delayed(const Duration(milliseconds: 200));
      await AppTrackingTransparency.requestTrackingAuthorization();
    }
  } on PlatformException {}
}

アプリ名の設定

デフォルトはパッケージ名になっているので、日本語などにカスタマイズしたい場合は、以下の設定を行いましょいう。

IOS用設定

ios/Runner/info.plist
<dict>
	<key>CFBundleName</key>
	<string>{ここにアプリ名を設定}</string>
</dict>

Android用設定

app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example">
   <application
        android:label="{ここにアプリ名を設定}"

IOS用言語設定(他言語対応なしの場合)

App Storeにリリースしたアプリの言語が英語になっている場合、
以下のようにios/Runnner/info.plistを編集する。

プライバシーポリシー作成

ポリシーを記載したページを作成する。
①githubのpublicリポジトリを作成する。
②Settings > Pages > choose a themeを選択
③select themeを選択
④index.mdが生成される、編集

生成されたページは以下のURLからアクセス可能
https://{アカウント名}.github.io/{ブランチ名}/

日本語のフォントが漢文になってしまう

以下ページを参考にプラグインを導入し、MaterialAppウィジェットのプロパティを編集する。
https://docs.flutter.dev/development/accessibility-and-localization/internationalization#setting-up

class MyApp extends StatelessWidget {

  
  Widget build(BuildContext context) {
    const locale = Locale("ja", "JP");
    return MaterialApp(
      locale: locale,
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: [
        locale,
      ],
      //(以下省略)
    );
  }
}

Discussion