「開発」カテゴリーアーカイブ

StoreKit2でシンプルな課金処理 第2回

第2回は、事前準備のため、App Store Connectで必要な設定を行なっていきます。誰にでもわかるよう、ログイン画面から操作手順を解説していきます。

※アプリ開発経験者向けの課金処理に関する解説です。


1.App Store Connectにログインします。

2.「契約/税金/口座情報」をクリックします。

3.「有料App」のステータスが「アクティブ」になっていることを確認します。

※上記のようになっていなければ、「有料App」の文字をクリックして、口座情報などを正しく設定します。

4.App Store Connectログイン直後の画面に戻って「マイApp」をクリックします。

5.これから課金処理を実装する、あなたのアプリをクリックします! (※初回バージョンからアプリ内課金を実装する場合は8へ)

6.iOS App の右横の「+」をクリックします。

7.新しいバージョンを入力します。このバージョンからアプリ内課金が有効になります。

8.アプリ画面の左下にあるApp内課金から「管理」をクリックし、App内課金 (0) の右側にある「+」をクリックします。

9.課金タイプを選択します。今回は “自動更新サブスクリプション” を選択します。

10.「参照名」と「製品ID」を入力します。

「参照名」はApp Store Connect上のみで表示されます。自分があとで見て分かりやすい名前をつければ大丈夫です。作成後に変更可能です。

「製品ID」はあとで変更出来ません。他とかぶらない一意のIDを指定します。アプリの識別IDに加えて機能名や金額を指定すると良いと思います。

11.サブスクリプショングループを作成します。

「サブスクリプショングループ参照名」は、サブスクリプションの管理単位で、通常1つのアプリに対して1つあれば良いようです。App Store Connectおよび「売上とトレンド」のレポートでのみ表示されます。App Storeには表示されません。

1〜11の手順が終わると、下記のような画面になります。

(੭ ˃̣̣̥ ω˂̣̣̥)੭ु⁾⁾

長くなってきたので、第3回へ続きます。

StoreKit2でシンプルな課金処理 第1回

あけましておめでとうございます。本年もよろしくお願いいたします。

(੭ ˃̣̣̥ ω˂̣̣̥)੭ु⁾⁾

本年2022年はiPhoneアプリのテキスト漫画に課金処理を実装していきたいと思います。2022年1月時点で最新の Xcode (13.2.1) をベースに、iOS15で登場したStoreKit2を利用して誰でも確実に課金処理を実装できるよう、連載形式で少しずつ解説していきます。

※アプリ開発経験者向けの課金処理に関する解説です。

テキスト漫画には、既に本連載の方法で月額課金を実装してリリース済みです。


早速ですが、第1回はアプリ内課金の種類を説明します。

アプリ内課金には

1.消耗型
2.非消耗型
3.自動更新サブスクリプション
4.非自動更新サブスクリプション

の4種類があります。

1の消耗型は皆さん大好きなガチャを回すため、ゲーム内通貨を購入する際に利用されます。1回使ったら戻ってきません。お金は大切にしましょう。

2の非消耗型は、1回購入すればアカウントに紐づいて一生涯使い続けられるものです(アプリが無くならなければ)。アプリの広告をオフにする機能や、永続して使い続けられる非消耗型アイテム購入などがあります。

3の自動更新サブスクリプションは、キャンセルするまで継続的に課金されるタイプです。課金している間だけコンテンツへのアクセスが有効になったりします。ビデオ、音楽、記事、クラウドストレージなどへのアクセス権が一例です。課金をやめると利用不可になります。

4の非自動更新サブスクリプションには、シーズンパスなどがあります。自動的に更新されないため、都度購入する必要があります。

今回、テキスト漫画では3の自動更新サブスクリプションを実装予定です。現時点で結構な数のテキスト漫画が存在するため、その中から自分の気に入ったテキスト漫画だけを

お気に入り

に追加し、お気に入りだけを閲覧できる画面を実装します。

(੭ ˃̣̣̥ ω˂̣̣̥)੭ु⁾⁾

・・

・・・え?2の非消耗型でいいんじゃないかって?

ごめんなさい、サーバー代を稼がせてください。

サーバー代は継続してかかるんです。

     -ーー ,,_
   r'”      `ヽ,__
   \       ∩/ ̄ ̄ ヽつ
  ノ ̄\ /”ヽ/ ”   ノ   ヽi
 |  \_)\ .\    ・  ・ |\
 \ ~ )     \ .\_  ( _●_)\_つ
    ̄       \_つ

第2回へ続く・・・

M1 Mac で arm64版のhomebrewとnode(nodebrew) 2021年4月版

買ったばかりのM1 Macにarm64版のhomebrewとnode(nodebrew)をサクッと入れて行きます。

思ったよりさっくり入りました。

トラブルを恐れて、血の滲む思いで4ヶ月買うのを我慢

して良かったです。

homebrew

homebrewはApple M1 チップに正式対応済で、公式通りのインストール方法で良いようです。

% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”

インストール完了後、パスを通します。

% echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”‘ >> /Users/name/.zprofile
% eval “$(/opt/homebrew/bin/brew shellenv)”

インストールされたバージョンを確認します。

% brew –version
Homebrew 3.0.11
Homebrew/homebrew-core (git revision 4dffd6ddcf; last commit 2021-04-09)

node(nodebrew)

nodeはv15.3.0以降のソースからコンパイルすればarm64版が使えるようです。

% brew install nodebrew
% nodebrew -v
nodebrew 1.0.1
% vim $(which nodebrew)

コンパイル前に vim $(which nodebrew) で以下箇所を修正して保存します。

sub system_info {
my $arch;
my ($sysname, $machine) = (POSIX::uname)[0, 4];
if ($machine =~ m/x86_64|arm64/) { // arm64を条件に追加
$arch = ‘arm64’; // arm64に変更

ホームに移動後、ディレクトリを作成します。その後、ls-remoteでリモート管理されているバージョンを確認します。

% cd ~
% mkdir -p ~/.nodebrew/src
% nodebrew ls-remote

確認後、入れたいバージョンをビルドしてそのバージョンに切り替えます。また、パスを通します。

% nodebrew compile v15.14.0
% nodebrew use v15.14.0
% echo “export PATH=$HOME/.nodebrew/current/bin:$PATH” >> ~/.zprofile
% source ~/.zprofile

バージョンを確認します。

% node -v
v15.14.0

       c⌒っ゚Д゚)っ
M1 Mac mini [16GB/1TB]

Oracle DYNにドメイン名を停止された話

先月2019/6/25に、自作iOSアプリ(側ネイティブアプリなど)およびそのサポートサイトである本サイトに長年利用していたドメイン名がブロックされました。DynDNSの時代から使っていたため、かれこれ15年以上利用していました。

事前警告など全くありません。なんの前触れもなくいきなり止められました。

停止した理由をOracle Dynに問い合わせましたが、しばらく返事がありませんでした。

10日後に、やっと返事がありました。返事は後にも先にもこれだけです。

Hello,

Thank you for contacting the Oracle Dyn Abuse team,

We have received multiple complaints against the hostname in your account, “ukaapple.selfip.com”. As your account has been identified as violating our AUP, it has been terminated. At this time your account will not be reinstated. Your account has also been refunded for current eligible services. For more information about our AUP please visit http://dyn.com/legal/acceptable-use-policy/

Oracle Dyn Abuse Team
abuse@dyn.com

複数件の苦情が入ったらしいです。

しかし、どんな苦情があって、どんな基準に違反したのか全くわからず、対処のしようがありません。

リンク先のAUPの規約を読むとわかるのですが、明確な基準はありません。Oracleの恣意的な判断で自由に決められるもので、あって無いような規約です。

どのような違反があったのか教えてくれと再度問い合わせましたが、それから今日まで返事がありません。もうすぐ1ヶ月経ちます。

Oracleの内部的な実情はわからず推測ですが、おそらく個人相手の商売は金にならないから軽視しているのでしょう。

問い合わせの返事が来るまでの期間や返事の内容を見ていると、サポートの体を成していません。

ドメイン名の回復が見込めなくなったため、新しいドメイン名を取得してアプリなどを改修することになりました。

かなりの改修コストがかかります。この改修コストをかけるなら、1本でも新しいアプリを開発したいところです。

Oracleのやっていることはほとんど犯罪だと思うのですが、どう対処すれば良いですかね?

個人で裁判するのはいろんな面で難しいし、消費者センターに駆け込む訳にも行かないし・・・

個人で出来ることは、なるべくOracleの息がかかったサービスは使わないくらいですかね・・・

.NET CoreでSystem.Drawingを使う Ubuntu編

Ubuntuにおいて、.NET CoreでSystem.Drawing配下のライブラリを扱う方法を記述します。
OpenTKにおいて、テクスチャなどを扱う際に必要です。

UbuntuでSystem.Drawing配下のライブラリ利用時に、以下のようなエラーが発生した場合の対処方法となります。

例外が発生しました: CLR/System.TypeInitializationException
An unhandled exception of type ‘System.TypeInitializationException’ occurred in System.Drawing.Common.dll: ‘The type initializer for ‘Gdip’ threw an exception.’
Inner exceptions found, see $exception in variables window for more details.
Innermost exception System.DllNotFoundException : Unable to load DLL ‘libgdiplus’: The specified module could not be found.


$ sudo apt-get update
$ sudo apt-get install libgdiplus

これだけ!
macに比べるととっても簡単です。

.NET CoreでSystem.Drawingを使う mac編

OS Xにおいて、.NET CoreでSystem.Drawing配下のライブラリを扱う方法を記述します。
OpenTKにおいて、テクスチャなどを扱う際に必要だったので・・・

まずは、X11をインストールします。ここからdmgをダウンロードしてインストールします。

インストール後はシンボリックリンクを貼っておきます。


ln -s /opt/X11/include/X11 /usr/local/include/X11

VSCodeを立ち上げ、Shift(⇧)+Command(⌘)+Pを押して “nuget” と打ちます。リストから「NuGet Package Manager: Add Package」を選択します。※NuGetインストール済みを想定

続いて “System.Drawing.Common” と打ってリターンキーを押下し、「System.Drawing.Common」を選択します。すると、インストール可能なバージョンリストが表示されるので選びます。特に理由がなければいちばん新しいバージョンを選びます。

次に、ターミナルからlibgdiplusをインストールします。事前に色々な依存ライブラリを入れてから、ソースを持ってきてメイク&インストールです。エラーやワーニングが出るかもしれません。柔軟に対応する必要があります。


$ brew install autoconf 
$ brew install pkg-config 
$ brew install readline 
$ brew install automake 
$ brew install gettext 
$ brew install glib 
$ brew install intltool 
$ brew install libtool 
$ brew install cairo
$ brew install jpeg
$ brew install libtiff
$ git clone https://github.com/mono/libgdiplus.git
$ cd libgdiplus
$ CPPFLAGS="-I/usr/local/opt/libpng12/include -I/opt/X11/include" LDFLAGS="-L/usr/local/opt/libpng12/lib -L/usr/X11/lib" ./autogen.sh
$ ./configure
$ make && make install

Linux/Windows/Mac共通で、C#によりOpenGL開発が出来る環境を構築

昨日はUbuntu 18.04 LTSに.NET Core SDKをインストールしました。

本日は、この環境へVisual Studio Code と OpenTK.NETCoreをインストールしていきます。

目的は、Linux/Windows/Mac共通で、C#によりOpenGL開発が出来る環境を構築することです。

Ubuntuで構築していますが、今回構築した環境で書いたC#コードはWindowsやMacでも動くはずです。たぶん。動くはずだ。動くといいなあぁ。動かないかなぁ(希望)

1.https://code.visualstudio.com/downloadからVisual Studio Codeをダウンロードします。Linux(.deb)を選びます。

2.端末から以下を実行してVisual Studio Codeをインストールします。


sudo dpkg -i <ダウンロードしたファイル>.deb
sudo apt-get install -f # Install dependencies

3.端末から以下を実行してVisual Studio Code を立ち上げます。


code .

4.C#のプラグインをインストール

左側に並んでいる5個のアイコンのうち、一番下の「拡張機能」をクリックします。(Ctrl+Shift+Xでも可)
“C#”と打ち、表示された「C# for Visual Studio Code (powered by OmniSharp) Microsoft」をインストールします。

5.nugetをインストール

同じく「拡張機能」で “nuget” と打ちます。表示された「NuGet Package Manager」をインストールします

6.OpenTK.NETCoreをインストール

Ctrl+Shift+Pを押して “nuget” と打ちます。リストから「NuGet Package Manager: Add Package」を選択します。
続いて “OpenTK” と打ってリターンキーを押下します。表示されたリストから「OpenTK.NETCore」を選択します。すると、インストール可能なバージョンリストが表示されるので選びます。特に理由がなければいちばん新しいバージョンを選びます。

7.さあ!C#でOpenGL開発が可能な環境が出来ました!作ったコードはWindowsでもMacでも動くよ!

        *'“・* 。 
        |     `*。 
       ,。∩      *  
      + (´・ω・`) *。+゚ 
      `*。 ヽ、  つ *゚* 
       `・+。*・' ゚⊃ +゚ 
       ☆   ∪~ 。*゚ 
        `・+。*・ ゚ 

たぶんね!次回以降は実際にOpenGLのコードを書いて、そのコードがWindows/Macでも動くか検証していきます。

Ubuntu 18.04 LTS への.NET Core SDKインストール方法

Ubuntu 18.04 LTSが出たばかりで.NET Core SDKのインストール方法が公式に載ってなかったので、メモっときます。


sudo apt-key adv --keyserver packages.microsoft.com --recv-keys EB3E94ADBE1229CF

sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic main" > /etc/apt/sources.list.d/dotnetdev.list'

sudo apt-get update

sudo apt-get install dotnet-sdk-2.1.105 

以下、動作確認用です。プロジェクト用のディレクトリを作成して、その中で実行します。”Hello World!”と表示されれば成功です。


dotnet new console

dotnet run

((⊂(`ω´∩) しゅっしゅっ

2018/5/19追記:

公式のインストール手順出ました。

Register Microsoft key and feed


$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/prod.list 
$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

Install .NET SDK


$ sudo apt-get install apt-transport-https
$ sudo apt-get update
$ sudo apt-get install dotnet-sdk-2.1.200

macでのmp4動画の画面サイズ変更

開発者向け開発メモです。

AppPreviewの5.5インチiPhoneの動画をffmpegで4.7インチの動画から作る方法です。
普通にsオプション使うと画面サイズが思い通りにならず、1079×1920になってしまいます。

以下のようにすると、きちんと1080×1920になります。

ffmpeg -i catama4.7.mp4 -vf scale=1080×1920,setsar=1 catama5.5.mp4

最速でAppStore用の動画を作成する方法

前提

・ffmpegインストール済み
・実機あり(iPhone/iPad)
・macOS Sierra バージョン10.12.6

手順1

iPhone/iPadをmacに接続し、QuickTime Playerを立ち上げ、「ファイル」「新規ムービー収録」を選択。録画ボタンの右のメニューからカメラやマイクをiPhone/iPadに切り替える。

手順2

録画ボタンを押し、作成したアプリを動作させて動画を保存する。
(30秒以内。30秒を超えると、30秒以下になるよう動画を編集する必要あり)

手順3

fpsを30に落とすため、ターミナルで以下を実行する。fpsを落とした動画を、iTunesConnectでアップロードすれば終わり。

ffmpeg -i src.mov -crf 20 -r 30 dest.mov

-iオプションで、手順3で作成した動画を指定します。
-crfオプションで画質を指定します。
-rオプションでfpsを指定します。

5.5インチ向けにサイズ変更する場合

ffmpeg -i src.mov -crf 20 -r 30 -s 1080×1920 dest.mov

4.7インチ向けにサイズ変更する場合

ffmpeg -i src.mov -crf 20 -r 30 -s 750×1334 dest.mov

4インチ向けにサイズ変更する場合

ffmpeg -i src.mov -crf 20 -r 30 -s 640×1136 dest.mov