そういうのがいいブログ

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

アプリ開発覚え書き

【Unity】 iOSアプリリリース手順3 [2022年]

f:id:marumaro7:20200623230301p:plain

はじめに

Unityを使ったiOSアプリリリース手順(全5回)
この記事はそのうちの3つ目の記事です。

手順1の記事はこちら
marumaro7.hatenablog.com

Profileの作成

証明書とAppIDを合体させて1つの証明書にする作業

1.デベロッパーサイトのProfiles

新規作成 f:id:marumaro7:20200623235323p:plain

2.Register a New Provisioning Profile

製品用は「Distribution」の「App Store」 Continue f:id:marumaro7:20200623235431p:plain

3.Generate a Provisioning Profile

App ID のリストが出てくるので今回のアプリを選択(これ以前に App ID を作成している事が前提)
→「Continue」 f:id:marumaro7:20200623235934p:plain

4.Certificatesを選択

一番新しいやつを選択する 古いやつは有効期限がきれているかも f:id:marumaro7:20200624000400p:plain

5.プロファイルの名前を入力

好きな名前でいい。
私はアプリ名Profileにした。 f:id:marumaro7:20200624000700p:plain

6.ファイルダウンロード

ダウンロードしたファイルをダブルクリックして設定を反映
(1年以上前に作成したプロファイルは期限切れになる)

(私は一応ダウンロードしたプロファイルファイルは自分がわかる場所に保存しておいてます。)

次 手順4

後半戦! あとすこし!

marumaro7.hatenablog.com

iOSアプリリリース全手順リンク

手順1

marumaro7.hatenablog.com

手順2

marumaro7.hatenablog.com

手順4

marumaro7.hatenablog.com

手順5

marumaro7.hatenablog.com

【Unity】iOSアプリリリース手順2 [2022年]

はじめに

Unityを使ったiOSアプリリリース手順(全5回)
この記事はそのうちの2つ目の記事です。

手順1の記事はこちら
marumaro7.hatenablog.com

アプリの登録

1.デベロッパーサイトCertificates Identifiers & Profilesにアクセス

デベロッパーサイト
Apple Developer


<2022年6月追記>
実機ビルドをしている場合、自動で作成されているようです。
その場合はNAMEの項目の文字をクリックして編集を行ってください。
必要項目は設定されているため、サービスの自己申告欄の記入がメインとなります。

<追記終了>




Identifiers新規作成


2.App IDsを選択しContinue <2020年8月追記>

<2022年6月追記>
自動で作成されていた場合、
この項目は自動設定されるため設定不要です。

iosリリース2-1

3.Appを選択しContinue

4.アプリの名前を登録

アルファベットで好きな名前いれる、 アプリ名+Appでよいと思います。

5.バンドルIDの設定 重要

Unity側で設定したバンドルID(Bundle Identifier)(Unityではパッケージ名かも?)を入力 com.△△.○○
(△はunityのプレイヤーセッティングで設定したCompany Name) (○はアプリ名)

6.サービスの自己申告

アプリでここに該当するサービスを利用している場合はチェックを入れる。 
 ・登録審査に影響するのでちゃんと申告する。
 ・Game CenterとIn-App Purchaseは外せない

サービス内容の詳細については下記参照
https://ameblo.jp/10soba/entry-12500441948.html

7.Continue押す

8.RegisterをクリックしてAppIDを作る

9.Idenifiersに登録されているのを確認して終了

次 手順3

marumaro7.hatenablog.com

iOSアプリリリース全手順リンク

手順1

marumaro7.hatenablog.com

手順3

marumaro7.hatenablog.com

手順4

marumaro7.hatenablog.com

手順5

marumaro7.hatenablog.com

【Unity】 iOSアプリリリース手順1 [2022年]

はじめに

Mac買ったしついにiosデビュー♪

と思った直後に立ちはだかる分厚い壁!!それは、

iOSリリース設定

ネットに情報はあるにはあるんですが、

断片的だしよくわからんというのが正直なところでした。

メモ程度ですが、リリース手順を書いてみました。

ストアでの設定内容は頻繁に変わってしまうので

ちょっと違うところがでてくるかと思いますが、ご容赦ください。

※注意 iOSへのリリースは AppleDeveloperProgram(有料) の加入が必要です。

hirokuma.blog

証明書の作成 Certificate 

〜このパソコンは特定のアプリの開発用のパソコンですよーと証明するもの〜
一回やったら一年間はやらなくていい
・アップデート
・2つ目のリリース
をやる時も期限が切れていなかったらやらなくていい

証明書の作成が終わっている方は手順2へお進みください。 marumaro7.hatenablog.com

<2022.4.6追記>
証明書の作成から11ヶ月経つとアップルから期限切れのお知らせメールがきます。
その際の証明書の更新手順はこちらです。

marumaro7.hatenablog.com

前準備 パソコン上での作業

1.Macでキーチェーンアクセスを選択

Launchpad→その他→キーチェーンアクセス

Launchpad

その他

キーチェーンアクセス

2.上のウインドウのキーチェーンアクセス

 証明書アシスタント→認証局に証明書を要求
スクリーンショット_2020-05-28_23_44_32.png

3.ディスクに保存、鍵ペア情報を指定

・メールアドレス ・通称に自分の名前を漢字で入力(スペース無し) 「_Unity__iOSリリース手順1」を編集_-_Qiita.png


4.ファイルをデスクトップに保存



5.鍵ペア情報は

2048ビット
RSA
Slack___tweet_maru___スタジオしまづ Unityゲーム開発サロン.png  

デベロッパーサイトでの作業

デベロッパーサイトのcertificateに追加する
https://developer.apple.com/account/resources/certificates/list


新規作成



Add iOS Certificate にて作成するCertificateの選択をします。
開発用:Development の場合はiOS App Development
製品用:Production の場合はiOS Distribution (App Store and Ad Hoc)


「Choose File」 でデスクトップに保存した
CertificateSigningRequest.certSigningRequest を選択

ファイルを選択して「Continue」

Certificateの内容が表示される。有効期限があるので確認して「Download」をクリック


証明書がダウンロードされる
初めての作成だと「ios_distribution.cer」のファイルが作成されます。

このファイルをダブルクリックしてパソコンに反映
パソコンのキーチェーンアクセスに登録され、
デベロッパーサイトのCertificatesのページに追加される

動画で見たい方

文書だけじゃわからないよ!
という方は、動画で解説している講座を出しておりますので、
こちらをお試しください。30日間返金保証有りです。

marumaro7.hatenablog.com

アプリ開発収益化を時短したい方向けの講座となっております。

iOSアプリリリース手順リンク

手順2

marumaro7.hatenablog.com

手順3

marumaro7.hatenablog.com

手順4

marumaro7.hatenablog.com

手順5

marumaro7.hatenablog.com

【Unity】 iOS×Android 共有機能実装 Social ConnectorをAdmobと共存させる方法

環境

Unity 2019.3.12f1
macOS Catalina 10.15.4

はじめに

有機能はSocial Connectorを使用すれば簡単にできるとのことなので使ってみました。
私の能力では結構はまってしまったので実装手順をメモ

前提

Admob広告を使用するためGoogleMobileAdsのパッケージをインポートしている。
今回使用したバージョンはV5.1.0です。
UnityProjects.png

手順

1.ダウンロード
2.Unityにインポート
3.FileProviderに対応させる(Androidのみ)
 3-1.ファイル場所の移動
 3-2.マニフェストファイルの変更
4.書き込み設定変更(Androidのみ)
5.コードを書く
6.ボタンに割り当てる



1.ダウンロード
https://github.com/anchan828/social-connector#fileproviderに対応する GitHub_-_anchan828_social-connector__Social_Connector.png

2.Unityにインポート
Unity側でAsset > Import Package > Custom Packageから
SocialConnector.unitypackageを選択

3.FileProviderに対応させる(Androidのみ)
ダウンロードページにはこう書かれています。

>引用始まり    GitHub_-_anchan828_social-connector__Social_Connector.png >引用終わり
 
これをやるうえで注意しないといけないのは
GoogleMobileAdsのパッケージをインポートした時点で
PluginsフォルダとAndroidフォルダができあがっていること


結局なにをするのかというと次の2つです。
 3-1.ファイル場所の移動
 3-2.マニフェストファイルの変更

3-1.ファイル場所の移動 SocialConnector>Plugins>Androidの3つのファイルを Slack___Maru___スタジオしまづ Unityゲーム開発サロン.png

GoogleMobileAdsのパッケージをインストールすると生成される Plugins>Android に入れる ResultScene1_-_JobCheck_-_Android_-_Unity_2019_3_12f1_Personal__Personal___Metal_.png


3-2.マニフェストファイルの変更
先ほど移動した3つのファイルの一つであるAndroidManifestを編集
providerでかこまれているうちのandroid:authoritiesの内容を変更
Slack___Maru___スタジオしまづ Unityゲーム開発サロン.png

4.書き込み設定変更(Androidのみ)
Player設定/その他の設定/書き込み許可をExternal(SDCard)に変更
Slack___Maru___スタジオしまづ Unityゲーム開発サロン.png


5.コードを書く

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;//DateTimeを使うとき必要


public class Kyouyuu : MonoBehaviour
{
    //このShare()関数をボタンに割り付ける
    public void Share()
    {
        StartCoroutine(ShareScreenShot());
    }

    IEnumerator ShareScreenShot()
    {        
        //ファイル名が重複しないように実行時間を付与。
        string fileName = DateTime.Now.ToString("ScreenShot yyyy-MM-dd HH.mm.ss") + ".png";

        //スクリーンショット画像の保存先を設定。
        string imagePath = Application.persistentDataPath + "/" + fileName;

        //スクリーンショットを撮影
        ScreenCapture.CaptureScreenshot(fileName);

        // キャプチャを保存するので1フレーム待つ
        yield return new WaitForEndOfFrame();


        

        // Shareするメッセージを設定
        string text = "ツイート内容はここにかく \n#ハッシュタグ ";
        string URL = "宣伝のURL";

        //一秒待つ これをやらないとうまくできない
        yield return new WaitForSeconds(1);

        //Shareする
        SocialConnector.SocialConnector.Share(text, URL, imagePath);//スクショいれる時
        //SocialConnector.SocialConnector.Share(text, URL, null);//画像入れない時

    }
}



6.ボタンに割り当てる
自分の好きなボタンに割り当てる

おわりに

いろいろ格闘したわけですが、 苦労してネットからひろった情報は
Social Connectorのダウンロードページにかいてあるという始末。
これからはダウンロードページの説明よく読まなければ。。。

参考

https://www.tomog-storage.com/entry/2018/08/06/210815

Unity使いがついにMacを買った話 スペック決定の過程とお得に買う方法

f:id:marumaro7:20200621155427p:plain

はじめに

iOSへリリースするために必要になるのがmacのパソコンです。

また、iOSでアプリをリリースするためにはApple Developer Programに登録する必要があり、

年間メンバーシップの料金は11,800円です。

副業における金額的リスクは小さくいきたいと考えていたので

憧れつつもずっと購入を控えていました。

ですが、この度、、、

アプリ開発ずっと続ける!!

と決意したためmacを購入することにしました。

購入の際の私なりの購入の過程を残しておきます。

iMacか?macbookか?

作業場所を選ばないmacbookはとても魅力的でした。

でも私は思ったのです。

外で作業する可能性はめちゃくちゃ低い!!

てことでiMacに決定!

新品か?中古か?

最初は中古のiMacを探していましたが、

・ほしいスペックのiMacがほとんど売っていない
・中古があっても価格が新品と数万円しか変わらない

という感じでした。

探す時間がもったいないと判断し新品かかっちゃおー!

となりました。

どこで買った?

選択肢は次の4つ
Apple公式サイトで購入する
Apple整備済製品からMacBookを購入する
Amazon楽天市場などのサイトから購入する
・家電量販店で購入する

メモリは絶対に16GBにしようと考えておりました。

そうなるとカスタマイズが必要です。

カスタマイズ対応しているのはApple公式のみとなっており、

自動的に公式で購入することに。

スペック

f:id:marumaro7:20200621160543p:plain

・CPU (アップグレード)        :せっかくだしCPUアップグレード
・メモリ 16GB(アップグレード):
 ある程度好き勝手にエディターをひらきながら安心して使いたい
・ストレージ 1TB Fusion Drive (標準) :SSDが良い説があるけど予算が無かった
・グラボ Radeon Pro 560X (標準)  :よくわからん(適当) 予算が無いので標準を選定
・キーボード 日本語 テンキー付き   :意外と重要 テンキーがないとだめ!絶対!

割引は?

Apple公式サイトで購入するという条件で割引となると次の5つでした。
・学生、教職員向けの特別価格
・割引クーポンコード
・初売りセール
・AppleStoreで値切る
・ポイントサイトを使う
・クレジットカードで支払い(ポイントで実質値引き)

割引クーポンコードは一般人が手に入れる方法はないようです。


私の状況下では
・ポイントサイトを使う
・クレジットカードで支払い(ポイントで実質値引き)
を活用し購入しました。

ポイントサイトに関しては、いつも使っているサイトは無かったので、

楽天ポイントとして貯まる「楽天リーベイツ」を利用しました。
還元率は現在1%です。(2020年6月現在)
私が購入した時は2%だったので割合は定期的に変動するかもです。

www.rebates.jp

使用感

結局使ってみてどうなの?というところですが、

大正解!!めちゃくちゃ処理早い!!

・起動時間
 新品ということもあるかもですが、
 電源入れてデスクトップが表示されるまで10秒くらいです!
 (ウイルスバスター入っているのに!早い!感動✨)

・ビルド
 今までのPCでは64bitのアプリをビルドすると10分程度かかっていました。
 でも今は違う!同じプロジェクトをビルドすると1分くらいで終わってくれます。
 アプリ開発を空き時間に作っている私としてはだいぶ効率が変わりました。

今のところなにか不満があるということはありません。

余談

Apple Developer Programの年間メンバーシップの料金支払いは

Apple Storeギフトカードで払う方法が

検索するとでてきますが、

現在ではクレジットカードオンリーになっているので注意してください。

クレジットカードの種類はVISAだけでなくJCBなど幅広い種類に対応していました。

ヘッダー悩みすぎた!過程で作った16枚の画像(400×200)配布します

f:id:marumaro7:20200621064344p:plain

はてなブログに記事1本化

わたくしごとですが、

これまで記事作成は、次の3つを使っていました。
はてなブログ
Ameba ownd
・Qiita


メインはQiitaで書いていたのですが、ここでは技術記事しか書けないので

自己表現の場として、はてなブログで今後記事を書いていくことにしました。

そんなんで、ただいまブログのデザイン関係を整備中です。


ブログの印象はヘッダーで決まる!ってことで

私が演出したい印象は、

クリエイター感!!

これを目指して制作しました。

そして現在のヘッダーになったわけです。

過程で作ったヘッダーはこちら f:id:marumaro7:20200621062512p:plain

なんだか、、、

他のブログテーマだったら使えそう💡

ってことで欲しい方いたらどうぞ持っていってください。

画像はこちら

私のどうでもいい話はおいといて、

今回制作したヘッダーはこちら

そのまま使える400×200サイズです!

Google ドライブからどうぞ drive.google.com

f:id:marumaro7:20200621062512p:plain

【Unity】特定のシーンに移ったタイミングでBGMを変更する方法

環境

Unity 2019.3.7f1

はじめに

図のように特定のシーンでだけBGMを変更する方法です。
image.png
次の知識の組み合わせで設定できます。
・シングルトン設定
・シーン遷移
・if文の複数条件


・音楽再生
 音の基本
marumaro7.hatenablog.com

・デリゲート
 参考記事
nn-hokuson.hatenablog.com

・関数
 関数の基本
marumaro7.hatenablog.com


コード

空のオブジェクトにこのコードを割り当てて使用する。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; //追加!!

public class test5 : MonoBehaviour
{
   //シングルトン設定ここから
    static public test5 instance;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
        else
        {
            Destroy(this.gameObject);
        }

    }
    //シングルトン設定ここまで




    public AudioSource A_BGM;//AudioSource型の変数A_BGMを宣言 対応するAudioSourceコンポーネントをアタッチ
    public AudioSource B_BGM;//AudioSource型の変数B_BGMを宣言 対応するAudioSourceコンポーネントをアタッチ

    private string beforeScene;//string型の変数beforeSceneを宣言 
        
    void Start()
    {
        beforeScene = "Scene1";//起動時のシーン名 を代入しておく
        A_BGM.Play();//A_BGMのAudioSourceコンポーネントに割り当てたAudioClipを再生

        //シーンが切り替わった時に呼ばれるメソッドを登録
        SceneManager.activeSceneChanged += OnActiveSceneChanged;
    }

    
    

    //シーンが切り替わった時に呼ばれるメソッド 
    void OnActiveSceneChanged(Scene prevScene, Scene nextScene)
    {      
            //シーンがどう変わったかで判定
            //Scene1からScene2へ
            if (beforeScene == "Scene1" && nextScene.name == "Scene2")
            {
              A_BGM.Stop();
              B_BGM.Play();
            }

            // Scene1からScene2へ
             if (beforeScene == "Scene2" && nextScene.name == "Scene1")
             {
              A_BGM.Play();
              B_BGM.Stop();
             }         


        //遷移後のシーン名を「1つ前のシーン名」として保持
        beforeScene = nextScene.name;
    }
}

ポイント
・シングルトンのオブジェクトにする。
・現在のシーンと遷移先のシーンが一致したタイミングで音声を切換え 

おわりに

void OnActiveSceneChanged(Scene prevScene, Scene nextScene)
のprevSceneの引数の情報はうまく扱えなかったので使用していません。