xcode build only device generic iOS device

xcode のシュミレータ一覧が表示されず
実機でしか確認できな。

iPad で画面キャプチャしたいのに。

Unity でビルドした場合、
xcode の Build Settings の Supported Platforms が iphoneosになっていたので iOS に変更
表示されるようになった。

Exception: Calling TargetGuidByName with name=’Unity-iPhone’ is deprecated. There are two targets now, call GetUnityMainTargetGuid()

非推奨になったライブラリが対応してもらうまでに
先に修正して対応。

ITMS-90809: Deprecated API Usage

New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).

Apple に ipa をアップ時、上記のようなエラーメールが届いていて、実行ファイルがアップされていなかった。
メールで届いていたので、発見に時間がかかってしまう。

Appleでは UIWebview を使えなくなってしまったようだ。

cordova iOS5.1.1 以降にする必要。

プラグインを追加
cordova plugin add cordova-plugin-wkwebview-engine

config.xml ファイルに以下を追加

そうすることで、WKWebView のみ使用されるようだ。

Unity D8: Cannot fit requested classes in a single dex file

D8: Cannot fit requested classes in a single dex file
のエラー
パッケージなどを追加して、メソッドが 65536 数を超えると発生するらしい。

ビルド方法が Gradle になっていないことが、原因。

Player Setting の
Publishing Settings の
Minify Release Debug に Gradle に変更で対応できた。

Could not find an installed version of Gradle either in Android Studio

> cordova build android
で、ある日突然、以下のエラーが・・・

Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio

あれ、gradle コマンドにパスが通っていない??

Android Studio はインストールされているし、最近 Android Studio も使っていないのに・・・
でも、フォルダーの日付を見てみると、アップデートが最近あったような

結局、Gradle をダウンロードしてきて、
(https://gradle.org/releases/ の binary-only から)

C:\gradle-6.3 に配置して
環境変数に
GRADLE_HOME C:\gradle-6.3
パスに
%GRADLE_HOME%\bin
を追加したところ、ビルドできた。

以前まで使えていた gradle はどこに行ったんだろう。

スマホアプリ多言語対応

制作と同じくらい動作検証が大変。

【iOSの場合】
アプリは 
「設定」→「一般」→「言語と地域」→「iPhoneの使用言語」を変更すれば
確認できる。
非対応の言語でも、優先順序に対応言語が含まれていたら選択される。

App Store の動作確認が大変
「設定」→上部にある「ユーザ名」→「iTunes と App Store」→「Apple ID」→
「Apple ID を表示」→「国または地域名」→「国または地域を変更」
https://support.apple.com/ja-jp/HT201389

読めない言語に変更した後、戻すのが大変。わかる言語になるまで選び続けるしかないのか。

xampp DocumentRoot Access forbidden! 403

httpd-vhosts.conf を変更して
プロジェクト毎に別のフォルダーを DocumentRoot にしようとすると
DocumentRoot “C:/xampp/htdocs” 以下の時は問題なかったのに
DocumentRoot “C:/projects/hogehoge\htdocs” のようにすると
Access forbidden! となる。

対処方法は Directory でフォルダーに権限を設定

cordova 決済 stripe クレジットカード情報保存

商品購入時にユーザーに毎回クレジットカード情報を入力してもらうのは使い勝手が悪いので
クレジットカード情報を stripe で保存できる機能を使う必要がありそう。

クライアント(JavaScript)側で実装するのかと勘違い。
cordova-plugin-stripe を調べても見つかるわけがない。

サーバー(phpなど)側で実装する。

【クレジットカード保存してなかった時は】
// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘source’ => $_POST[‘token_id’], // クレジットカードトークン
‘capture’ => false,
));
// 売上の確定
$charge->capture();

【クレジットカードを保存するようにする場合】
// 顧客情報作成
$stripe_customer = \Stripe\Customer::create(array(
‘source’ => $_POST[‘token_id’], // クレジットカードトークン
‘email’ => $_POST[‘email’], // メールアドレス
‘name’ => $_POST[‘customer_name’], // 顧客の名前
));

// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘customer’ => $stripe_customer->id,
‘capture’ => false,
));
// 売上の確定
$charge->capture();

そして、$stripe_customer->id の値を データベース(ユーザー情報)などに保持しておく

【既にクレジットカードを保存している場合】

// データベース(ユーザー情報)から STRIPEの顧客IDを取得
$stripe_customer_id

// オーソリ(与信枠の確保)
$charge = \Stripe\Charge::create(array(
‘amount’ => $_POST[‘amount’],
‘currency’ => ‘jpy’,
‘customer’ => $stripe_customer_id,
‘capture’ => false,
));
// 売上の確定
$charge->capture();