そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】AdMob GoogleMobileAds-v5.4.0 を v6.0.0に上げた際のエラー対応

環境

macOS 11.3
Google Mobile Ads Unity Plugin v6.0.0
Xcode 12.5
Unity 2020.3.2f1

はじめに

AdMobのプラグイン
GoogleMobileAdsの新しいバージョン6.0.0が半年ぶりくらいにでました。
そして、 v5.4.0からv6.0.0へ上げたら大量のエラーが出たので対応した話です。

https://pbs.twimg.com/media/E18jEzLUYAQKpHQ?format=jpg&name=large

結論 まだバージョンを上げてはいけない

だいたいのエラーは取り除けましたが、下記のエラーが発生しています。
これはプラグイン起因のようで、iOSのビルドが通らない状態です。
(Androidは実機で問題なく広告表示できることを確認しました。)

なので、プラグインのアップデートを待ちたいと思います。

github.com

<追記 2021年8月4日>
プラグインバージョンv6.0.2を新規プロジェクトに入れた状態で
ビルドした場合、エラーが出ないことを確認しました。
ただ、admobのアプリIDがUnityを開く度に消えてしまうのは直っていません。

<追記 2021年10月1日> 
アプリIDは"おわりに"の項目に追記した内容で保存されます。 v6.0.2にして問題無さそうです。

対応

エラーの読み込み方法の変更

×旧:args.Message
◯新:args.LoadAdError

//バナー読み込み失敗 となった時に起動する関数
    public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {    
        //×旧:args.Message
        //◯新:args.LoadAdError
        Debug.Log("バナー読み込み失敗" + args.LoadAdError);//args.LoadAdError:エラー内容 
    }

テストデバイス設定の削除

アダプティブバナーのサンプルコードに下記がありますが、
AddTestDeviceは使えなくなっているので削除します。
(テストデバイスの設定はadmobの設定画面から行えますので無くても問題ないです。)

AdRequest adRequest = new AdRequest.Builder()
            .AddTestDevice(AdRequest.TestDeviceSimulator)
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

変更後

AdRequest adRequest = new AdRequest.Builder().Build();

エラーの型変更

リワード広告のサンプルコードではこのようになっています。

//旧 v5.4.0
 //リワード読み込み失敗 となった時に起動する関数
    public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args)
    {
        Debug.Log("リワード広告読み込み失敗" + args.Message);//args.Message:エラー内容 
    }

変更
・AdErrorEventArgs→AdFailedToLoadEventArgs
・args.Message→args.LoadAdError

//新 v6.0.0
 //リワード読み込み失敗 となった時に起動する関数
    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        Debug.Log("リワード広告読み込み失敗" + args.LoadAdError);//args.LoadAdError:エラー内容 
    }

不要なデータを削除

1.データ削除

v6.0.0を入れた新規プロジェクトと見比べたところ、
いろいろとゴミがありました。
一旦GoogleMobileAdsとPluginsを消して入れ直したらエラーが解消されました。

2.アプリIDの再設定

アプリIDの情報も一緒に消えてしまうのでアプリIDを再設定してください。
また、Unityを開き直した際、アプリIDは保存されないため再度入力が必要です。
→アセット
Google Mobile Ads
→Settings

3.iOSプラグイン再設定

ATT対応でiOSプラグインにファイルを追加している場合は再追加をお忘れなく! marumaro7.hatenablog.com

iOS設定

下記2点の変更が必要です。
・Cocoapods integrarionを
 Xcode Project - Add Cocoapods to the Xcode projectへ変更
 (元から設定していても、データを消したせいかデフォルトに戻っていました。)
・Link frameworks staticallyを有効

→アセット
→External Dependency Manager
iOS Resolver
→設定

CocoaPodsのアップデート

ここまでの設定するとコード上のエラーはなくなります。
しかし、ビルド後、下記のエラーが出るようになりました。

エラー抜粋

Analyzing dependencies [!] GoogleAppMeasurement requires CocoaPods version >= 1.10.0, which is not satisfied by your current version, 1.9.1.


依存関係の分析[!] GoogleAppMeasurementにはCocoaPods
バージョン> = 1.10.0が必要ですが、これは現在のバージョン 1.9.1では満たされていません。

ということでCocoaPodsのバージョンを上げました。

marumaro7.hatenablog.com

おわりに

アプリIDが保存されないうちは前バージョンのv5.4.0が無難ですね。
(自動設定することもできるようですが、いじりたくない)

<追記 2021年10月1日> 
アプリID入力画面にて、
Delay app measurmentのチェックを付けて外せばアプリIDが保存されます。


最後に宣伝させてください。
アプリ開発を始めて丸2年が経ち、
節目としてなにか形にしたいと思い、Udemy講座を出しました!
www.udemy.com

ブログ限定割引リンクは私のプロフィールページにあります。
アプリ開発収益化を時短したい方向けの講座となっております。

Unity本を出版しました!

突然ですが、Unity本を出版しました!
こちらを読むことで、スクリプトの基礎固めができます!
現在、kindle unlimitedで読み放題設定中です。今のうちにどうぞ!


もっと早く教えてほしかった!Unity C#入門

参考

github.comdevelopers.google.com

guides.cocoapods.org qiita.com

t.co

なんもわからん状態からCocoaPodsのアップデートをした

はじめに

UnityでビルドしたところCocoaPodsのバージョンが低いとエラーが出ました。
前知識がない状態から 恐る恐るアップデートをした履歴です。

ターミナルから行うので、自己責任でお願い致します。

CocoaPodsとは

guides.cocoapods.org

CocoaPodsは、Xcodeプロジェクトのライブラリ依存関係を管理します。

アップデート方法

1.ターミナルを起動

ターミナルから操作する必要があるらしいので、ターミナルを起動します。

Finder>アプリケーション>ユーティリティ>ターミナル

ターミナルを起動すると、起動した時間とコンピューター名が勝手に表示されます。

ターミナルについては、こちらで勉強しました。
techacademy.jp

2.更新するコマンドを入力する

ターミナルに下記コマンドを入力してエンターキーを押します。

sudo gem install cocoapods

ターミナルの画面

管理者パスワード(パソコンのログインに使っているパスワードでいけました。)
を求められるので入力します。
注)パスワード入力の際、どこにも表示されません。

ターミナルで sudo コマンドを使うには管理者パスワードが必要 - Apple サポート (日本)

ターミナルでパスワードを入力する際、画面には何も表示されません。
間違ったパスワードを入力したり、パスワードを何も入力しなかった場合は、
コマンドは実行されず、もう一度やり直すように案内されます。

パスワードを入力してエンターキーを押すと、動きだすのでしばらく待ちます。
停止したら完了です。

(参考)完了後の画像

おわりに

ビルドし直したところ、無事CocoaPodsのエラーは消えました!

追記

2022年6月12日
ビルド時、cocoapodsのバージョンが低いとエラーが出たため
同様にアップデートを行いました。

その際、下記のような「上書きしますか?」的な問いが出たので「y」を押して進めました。

また、インストール後、初期設定のコマンド

pod setup

を打ち、 Setup completed と出たので終了しました。

追記(備忘録)

2022年6月24日
Xcodeアーカイブエラー
→Unityを見ると下記のエラーが出ていました。

iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project.

After the failure, "pod repo update" was executed and succeeded. "pod install" was then attempted again, and still failed. This may be due to a broken CocoaPods installation. See: https://guides.cocoapods.org/using/troubleshooting.html for potential solutions.

pod install output:

結局、Google Mobile Adsをv6.1.2→v7.0.2にすることで、エラーは消えました!

環境
MacOS:Monterey 12.4
Unity:2021.3.3f1
Xcode:13.4.1
Google Mobile Ads:v7.0.2

過程で以下の処理を行いましたが、エラーは解決しませんでした。
ただ、思い出したくなりそうなので、備忘録として残しておきます。



<以下 備忘録>
こちらを参考に進めました。

qiita.com

解決方法
cocoapodsがうまく動いていないらしい。
gemでインストールしていたcocoapodsをアンインストールして、homebrewでインストールし直した。 cocoapodsをアンインストールする
ターミナルで以下を実行する。

sudo gem uninstall cocoapods -n /usr/local/bin


さらにcocoapods関連のものをすべて表示する。

gem list --local | grep cocoapods

私の環境では以下のように実行結果が表示された。

cocoapods-core (1.8.4)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.3.0)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.1.0)
cocoapods-trunk (1.4.1)
cocoapods-try (1.1.0)

これらをすべてアンインストールしていく。

sudo gem uninstall cocoapods-core -n /usr/local/bin
sudo gem uninstall cocoapods-deintegrate -n /usr/local/bin
sudo gem uninstall cocoapods-downloader -n /usr/local/bin
sudo gem uninstall cocoapods-plugins -n /usr/local/bin
sudo gem uninstall cocoapods-search -n /usr/local/bin
sudo gem uninstall cocoapods-stats -n /usr/local/bin
sudo gem uninstall cocoapods-trunk -n /usr/local/bin
sudo gem uninstall cocoapods-try -n /usr/local/bin

すべてSuccessfully uninstalledと表示されてアンインストールされたはず。 一応もう一度listを表示してすべてアンインストールされたことを確認する。

gem list --local | grep cocoapods

.cocoapodsを削除する。

rm -rf ~/.cocoapods

Homebrewでcocoapodsをインストールし直す

ターミナルで以下のコマンドをすべて実行する。

brew install cocoapods
rm '/usr/local/bin/pod'
brew unlink cocoapods
brew link --overwrite cocoapods

Unityを再起動してもう一度iOSビルドしたらちゃんとxcworkspaceが生成されていた。



そのまま真似て実行していきました。

私の環境では、
gem list --local | grep cocoapods
の実行で以下が表示される結果となっています。

cocoapods-core (1.11.3)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.6.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
cocoapods-try (1.2.0)


また、以下コマンドは、実行完了まで数分かかっています。

rm -rf ~/.cocoapods



以下の画像は、実際に実行した履歴です。

・・・省略・・・


→その後、Unityでのビルドエラー改善せず。
 よくエラー文を見ると、以下のエラーが大量に出ている。

Ignoring json-1.8.6 because its extensions are not built. Try: gem pristine json --version 1.8.6

エラー文の通り、ターミナルにて下記を実行。
実行権限付与のためsudoを付けます。

sudo gem pristine json --version 1.8.6

実行画面

→その後、ビルド
→ビルドは通るものの、同様にCocoaPodsのエラーが発生  (文書は微妙に変わっている)

MacOS:Monterey でGoogle Mobile Ads:v6.1.2 のビルドはうまくいかないことを思い出す
Google Mobile Adsをアップグレード v6.1.2 → v7.0.2
→ビルド後のエラーなくなる。

→ターミナルで sudo gem pristine json --version 1.8.6 を実行したことが気になり、
 もう一度、下記を実行しました。
 →cocoapodsをアンインストール
 →homebrewでインストールし直す
 →cocoapodsをアンインストールする
 

<備忘録 おわり>

Unity本を出版しました!

突然ですが、Unity本を出版しました!
こちらを読むことで、スクリプトの基礎固めができます!
現在、kindle unlimitedで読み放題設定中です。今のうちにどうぞ!


もっと早く教えてほしかった!Unity C#入門

参考

guides.cocoapods.org support.apple.com

qiita.com

ButtonClick プライバシーポリシー

制定日:2021/05/03

このページは、Maruyu Apps(以下「私」と言います。)が提供するスマートフォンアプリ「ButtonClick」(以下「本アプリ」と言います。)における利用者情報の取扱いについて、以下のとおりアプリケーション・プライバシーポリシー(以下「本ポリシー」といいます。)を定め、公表しております。本アプリをインストールする前に本ポリシーをご確認いただき、内容をご理解の上で本アプリをご利用下さい。
なお、本ポリシーにおいて、「利用者情報」とは、お客様の識別に係る情報、通信サービス上の行動履歴、その他お客様のスマートフォンにおいてお客様と結びついた形で生成、利用又は蓄積されている情報であって、本ポリシーに基づき当社が取得するものを意味するものとします。

本アプリが利用する利用者情報

 
本アプリが利用する利用者情報は、下記の3つです。
  • アプリの広告表示のためにお客様の情報の一部を送信する可能性があります。
  • アプリではアクセス解析ツールを用いてアプリの利用状況を収集しております。
  • 問い合わせの際に利用者情報の一部を送信します。
  1. アプリの広告表示本アプリは広告表示のためにお客様の情報の一部を送信する可能性があります。広告表示は、下記2社のサービスを利用しており、本アプリは2社に利用者情報の提供を行います。それぞれのサービスが利用している利用者情報と目的については各社のサービスのプライバシーポリシーをご確認ください。

  2.アプリのアクセス解析
  本アプリではアクセス解析ツールを用いてアプリの利用状況を収集しております。

  アクセス解析Google Analyticsを利用しております。

  本アプリは画面遷移を行った際に、画面IDと利用者情報をGoogle Analytics

  に送付します。

  1. 問い合わせ
    本アプリでは問い合わせの際に利用者情報の一部を送信します。
    問い合わせはメールで行い、メール本文に下記情報が埋め込まれます。また、メールで送信されるため、メールアドレスも送信されます。
    • 名前、メールアドレス
    • 端末名、OSバージョン、その他端末情報(画面サイズ、ピクセル密度、利用可能ヒープメモリ量)
    • アドオン購入状況

利用目的

利用者情報はそれぞれ下記目的に利用されます。

  • 三者の広告の配信・表示のため
  • 当社のサービスに関連して、個人を識別できない形式に加工した統計データを作成するため
  • 本アプリに関するご案内、お問い合せ等への対応のため

【Unity】iOS14.5以降でIDFA取得するためにATT対応する方法 

追記<2023年9月>

本記事内容で対応できなくなっていました。
以下の記事を参照してください。

marumaro7.hatenablog.com

はじめに

タイトル専門用語でわけわからん!
はい、私も同じです。
とりあえず、広告収益に影響が出る恐れがあるということなので、
対応していきますっ!

IDFAとは?

IDFAはIdentifier For Advertisingの略

端末固有のIDで、これを使ってデータが収集されます。
そして、そのIDのユーザーに興味がありそうな広告を
表示するために使用されます。

なので、IDFAを取得していないと、 ガチゲーマーに美容液の広告が表示されたりするので、
広告をタップしてもらう確率が低くなると予想されています。

(ガチゲーマーは美容液使わないという話では無いですよっ!
広告をタップする確率が高いか低いかの話ですっ!)

iOS14.5から仕様変更

iOS14.4まではこのIDFAがユーザーの許可無しで取得できていました。

しかし、iOS14.5からIDFAを取得するにはユーザーの許可が必要になりました。

ATTとは?

ATTはAppTrackingTransparency の略

iOS14からIDFAの許諾をATTシステムで管理するようになりました。

「勝手にIDFA取得させねぇから!システム」と思っておけば良いと思います。
(よくわかってない)

許可リクエスト実装

IDFAを取得するために、
ユーザーへ許可を問うリクエストウインドウを表示する必要があります。
今回はその許可リクエストを実装します。

1.前提条件

Google Mobile Ads Unity Plugin v5.4.0
・広告は実装済

2.コード実装

コード実装の流れは下記です。
1.Objective-Cの言語でリクエストウインドウを表示する処理を書く
2.C#にて↑で作った処理を呼び出す

2-1.Objective-Cの処理

2-1-1.拡張子mmのファイルを作成する

テキストエディットで適当にテキストファイルをデスクトップに作ります。

ファイルの名前を「RequestIDFA.mm」に変更します。
ファイル名は何でも良いですが、拡張子を「.mm」にして下さい。

2-1-2.リクエストウインドウを表示する処理を書く

「RequestIDFA.mm」に処理を書いていきます。

#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/AdSupport.h>

extern "C" void _requestIDFA() {
    if (@available(iOS 14.5,*)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
            // Tracking authorization completed. Start loading ads here.
            // [self loadAd];
          }];
    }
}

2-1-3.Unityにファイルを追加

Unityにファイルを追加します。
Assets>Plugins>iOSに今回作成した「RequestIDFA.mm」を追加して下さい。

2-2.Unity(C#)での処理

2-2-1.スクリプト作成

C#スクリプトを作成します。
今回は「IDFA」という名前で作りました。
スタート関数でリクエストウインドウを呼び出す内容となっています。

<コード変更 2021年10月1日>
iOS15では起動直後にリクエストウインドウを表示しようとしても表示されません。
そのため、1秒遅延させて表示する内容に変更しました。
(Invoke関数を使って1秒遅延させただけです。)

<追記 2022年1月17日>
カメラ権限など他の権限ウインドウも同時に開くようですと、
リクエストウインドウが表示されない場合があります。
その場合は、任意のタイミングで呼び出すと良いでしょう。

<追記 2022年5月24日>
Unityエディター上で動作させるとエラーが出るので(エラーが出るだけで動作上問題無し)
Unityエディターの場合は動作させないように分岐を追加

using UnityEngine;
using System.Runtime.InteropServices;

public class IDFA : MonoBehaviour
{

#if UNITY_EDITOR//Unityエディターの場合の処理

    //何もしない

#elif UNITY_IOS//Unityエディターでない かつ iOSの場合に処理

    //RequestIDFA.mm で定義しているObjective-C(iOSで使用されている言語)の関数を以下のようにC#側で定義する
    [DllImport("__Internal")]//iOSのプラグイン読み込み 参考 https://docs.unity3d.com/ja/2018.4/Manual/NativePlugins.html
    private static extern void _requestIDFA();//外部で実装されるメソッドを宣言 参考 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/extern

#endif//Unityエディターでない かつ iOSの場合の処理範囲終わり


    private void Start()
    {
        Invoke("DelayIDFA", 1);//1秒遅らせてDelayIDFA()の呼び出し (iOS15では遅延させないと表示されないため)
    }


    private void DelayIDFA()
    {
#if UNITY_EDITOR//Unityエディターの場合の処理

        //何もしない

#elif UNITY_IOS//Unityエディターでない かつ iOSの場合に処理

        _requestIDFA();//IDFAリクエストの実行

#endif//Unityエディターでない かつ iOSの場合の処理範囲終わり

    }

}



ほんの少しコードを短くする場合は下記

using UnityEngine;
using System.Runtime.InteropServices;

public class IDFA : MonoBehaviour
{
#if !UNITY_EDITOR && UNITY_IOS
    //RequestIDFA.mm で定義しているObjective-C(iOSで使用されている言語)の関数を以下のようにC#側で定義する
    [DllImport("__Internal")]//iOSのプラグイン読み込み 参考 https://docs.unity3d.com/ja/2018.4/Manual/NativePlugins.html
    private static extern void _requestIDFA();//外部で実装されるメソッドを宣言 参考 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/extern
#endif

    private void Start()
    {
        Invoke("DelayIDFA", 1);//1秒遅らせてDelayIDFA()の呼び出し (iOS15では遅延させないと表示されないため)
    }

    private void DelayIDFA()
    {
#if !UNITY_EDITOR && UNITY_IOS
        _requestIDFA();//IDFAリクエストの実行
#endif
    }
}

2-2-2.空のオブジェクトに割付け

作成した「IDFA」のコードを空のオブジェクトに割り付けます。
空のオブジェクトの名前も「IDFA」にしました。

2-2-3.ビルド

ビルドしてUnity-iPhone.xcodeprojを開いて下さい。

一応ビルド手順
marumaro7.hatenablog.com

3.Xcodeでの設定

Xcodeでは
1.Info.plistに「Privacy - Tracking Usage Description」を追加
2.「AppTrackingTransparency.framework」を追加
を行う必要があります。

3-1.Info.plistに「Privacy - Tracking Usage Description」を追加

Unity-iPhone
>info.plist (Xcodeバージョン13.0では表記がinfoになっています。)
>「+」ボタン(マウス カーソルをInformation Property Listに合わせると出現します)
>「Privacy - Tracking Usage Description」と入力し追加
>追加した「Privacy - Tracking Usage Description」のValueに説明書きを追加
例:あなたの好みに合わせた広告を表示するために使用されます
Valueに入力しないと例外処理とされてしまうようなので必ず入力しましょう

文章の多言語化はこちらの「アプリ名ローカライズ iOS編」の要領で
NSUserTrackingUsageDescription = "日本語";
とすればできます。 marumaro7.hatenablog.com

NSUserTrackingUsageDescriptionの入力例
(画像には文末のセミコロンの入力できてませんのでお忘れなく!)

3-2.「AppTrackingTransparency.framework」を追加

>Unity-iPhone
>UnityFramework
>「+」ボタン
>AppTrackingTransparency.frameworkを追加

4.動作確認

iOS14.5以降にだけ表示されます。

もし表示されない場合
端末の
>設定
>プライバシー
>トラッキング
>Appからのトラッキング要求を許可
>オン
になっていることを確認してください。

<2022年2月 追記>
テスト広告を表示するには、
ATTウインドウの「許可」を押さないと表示されませんのでご注意ください。

自動で設定

「3.Xcode」での設定は
Unity側の設定で自動化することができます。

以下を参考にすると良いです。

dolphinetech.com

以下引用

ここでは、プロジェクトビルド後に自動でframeworkを追加し、
info.plistを編集してくれる方法(というかスクリプト)を書いていきます

Assets > Editor にファイルを一つ作ってください(Editorフォルダがない場合は作成してください)

私は、「AddElementsInfoplist」としました

作成したファイルに以下かのような処理(クラス名以外)を実装してください

#if UNITY_IOS
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using UnityEngine;
public class AddElementsInfoplist
{
    [PostProcessBuild]
    public static void OnPostProcessBuild(BuildTarget buildTarget, string buildPath)
    {
        // Info.plist に Privacy - Tacking Usage Description(NSUserTrackingUsageDescription)を追加する(ステップ2)
        string infoPlistPath = buildPath + "/Info.plist";
        PlistDocument infoPlist = new PlistDocument();
        infoPlist.ReadFromFile(infoPlistPath);
        PlistElementDict root = infoPlist.root;
        root.SetString("NSUserTrackingUsageDescription", "あなた様の好みに合わせた広告を表示するために使用されます!!!!");
        infoPlist.WriteToFile(infoPlistPath);
        
     // PBXProjectクラスというのを用いてAppTrackingTransparency.frameworkを追加していきます(ステップ3)
        string pbxProjectPath = PBXProject.GetPBXProjectPath(buildPath);
        PBXProject pbxProject = new PBXProject();
        pbxProject.ReadFromFile(pbxProjectPath);
        string targetGuid = pbxProject.GetUnityFrameworkTargetGuid();
        pbxProject.AddFrameworkToProject(targetGuid, "AppTrackingTransparency.framework", true);
        pbxProject.WriteToFile(pbxProjectPath);
    }
}
#endif

これでUnityでビルド後、自動的にframeworkの追加とInfo.plistの編集が行われているはずです!

おわりに

言語化がわからなかったので、
Twitterで助けを求めたらすぐ助けていただきました。
JOEさんありがとうございます。


<追記> iPhoneをiOS14.5にしたら下記の対応が必要です。 marumaro7.hatenablog.com



最後に宣伝させてください。
アプリ開発を始めて丸2年が経ち、
節目としてなにか形にしたいと思い、Udemy講座を出しました!
www.udemy.com

ブログ限定割引リンクは私のプロフィールページにあります。
アプリ開発収益化を時短したい方向けの講座となっております。

Unity本を出版しました!

突然ですが、Unity本を出版しました!
こちらを読むことで、スクリプトの基礎固めができます!
現在、kindle unlimitedで読み放題設定中です。今のうちにどうぞ!


もっと早く教えてほしかった!Unity C#入門

参考

qiita.com dolphinetech.com hirokuma.blog blog.be-style.jpn.com qiita.com qiita.com developers.google.com

<追記 2021年10月1日>

stackoverflow.com qiita.com

iOS14.5のテストビルドにはmacOS Big SurとXcode12.5が必要です。

はじめに

iOS14.5のテストビルドに少しつまづいた話です。

教訓

最初に今回の教訓だけ言います。
Xcode12.5はこのリンクからアップデートしましょう!

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料
apps.apple.com

iOS14.5テストビルドに必要なもの

iOS14.5テストビルドに必要なものは以下です。

macOS Big Sur(ビッグサー)
・Xcode12.5

なので、macOSがCatalina(カタリナ)なのであればOSのアップデートが必要です。
その後にXcodeをバージョンアップする必要があります。

ちなみに、
iPhoneをiOS14.5にアップデート後は、
古いXcodeバージョンでビルドしようすると怒られます。

f:id:marumaro7:20210501053410p:plain

問題:Xcodeをアップデートしたのにビルドできない

XcodeをデスクトップのAppStoreから検索してアップグレードしました。

だがしかし!

同じエラーが出てビルドができませんでした!

f:id:marumaro7:20210501053410p:plain

Xcodeのアップデート情報を見ると、

サポートはiOS14.4までとなっています・・・

Xcodeは、もうこれ以上アップデートできない・・・

え?詰んだ?\(^o^)/

iOS14.5に対応しているXcode12.5が実はあった!

ネットを徘徊していると
ここにiOS14.5に対応しているXcode12.5がありました!

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料
apps.apple.com

Xcode12.5がリリースされたのが4日前とのことだったので
ストアに反映されていなかっただけのようです。

おわりに

無駄にXcodeのアップデートしちゃった


最後に宣伝させてください。
アプリ開発を始めて丸2年が経ち、
節目としてなにか形にしたいと思い、Udemy講座を出しました!
www.udemy.com

ブログ限定割引リンクは私のプロフィールページにあります。
アプリ開発収益化を時短したい方向けの講座となっております。

「逆翻訳 翻訳時短」 プライバシーポリシー

制定日:2021/04/04

このページは、Maruyu Apps(以下「私」と言います。)が提供するスマートフォンアプリ「逆翻訳 翻訳時短」(以下「本アプリ」と言います。)における利用者情報の取扱いについて、以下のとおりアプリケーション・プライバシーポリシー(以下「本ポリシー」といいます。)を定め、公表しております。本アプリをインストールする前に本ポリシーをご確認いただき、内容をご理解の上で本アプリをご利用下さい。
なお、本ポリシーにおいて、「利用者情報」とは、お客様の識別に係る情報、通信サービス上の行動履歴、その他お客様のスマートフォンにおいてお客様と結びついた形で生成、利用又は蓄積されている情報であって、本ポリシーに基づき当社が取得するものを意味するものとします。

本アプリが利用する利用者情報

 
本アプリが利用する利用者情報は、下記の3つです。
  • アプリの広告表示のためにお客様の情報の一部を送信する可能性があります。
  • アプリではアクセス解析ツールを用いてアプリの利用状況を収集しております。
  • 問い合わせの際に利用者情報の一部を送信します。
  1. アプリの広告表示本アプリは広告表示のためにお客様の情報の一部を送信する可能性があります。広告表示は、下記2社のサービスを利用しており、本アプリは2社に利用者情報の提供を行います。それぞれのサービスが利用している利用者情報と目的については各社のサービスのプライバシーポリシーをご確認ください。

  2.アプリのアクセス解析
  本アプリではアクセス解析ツールを用いてアプリの利用状況を収集しております。

  アクセス解析Google Analyticsを利用しております。

  本アプリは画面遷移を行った際に、画面IDと利用者情報をGoogle Analytics

  に送付します。

  1. 問い合わせ
    本アプリでは問い合わせの際に利用者情報の一部を送信します。
    問い合わせはメールで行い、メール本文に下記情報が埋め込まれます。また、メールで送信されるため、メールアドレスも送信されます。
    • 名前、メールアドレス
    • 端末名、OSバージョン、その他端末情報(画面サイズ、ピクセル密度、利用可能ヒープメモリ量)
    • アドオン購入状況

利用目的

利用者情報はそれぞれ下記目的に利用されます。

  • 三者の広告の配信・表示のため
  • 当社のサービスに関連して、個人を識別できない形式に加工した統計データを作成するため
  • 本アプリに関するご案内、お問い合せ等への対応のため

【Unity】テキストのコピー機能を実装する方法

モバイル端末でインプットフィールドのテキストを
うまくコピーできなかったのでメモ

実装方法

下記スクリプトの関数をボタンに割り当てる

using UnityEngine;
using UnityEngine.UI;

public class CopyText : MonoBehaviour
{
    [SerializeField] private Text copyTarget_text;//コピーするテキストをアタッチ

 //この関数をボタンに割り当て
    public void CopyTextButton()
    {
        GUIUtility.systemCopyBuffer = copyTarget_text.text;
    }
}

参考

kan-kikuchi.hatenablog.com