Unityでメールを送信するアプリがiOSで動かない問題

0
Filed under Unity
Tagged as ,

Unityで作ったアプリでメールを送信するコードを書き、Unity Editor上では動いているのだが、iOSでは送信されない、という問題が発生しました。
(検証バージョン Unity 5.6.4p1)

前エントリではAndroidの不具合でしたが、iOSではまた色々と対応が必要でしたので、下記にまとめます。

.NET 2.0にする

これはAndroidでの対応と同じですが、Player Settings内にある、Configurationの、Api Compatibility Levelを「.NET 2.0 subset」となっている場合「.NET 2.0」にします。

Unity Player Settings Configuration .net 2.0 subset

link.xml

Assets/以下にあるlink.xmlを修正します。使用しているライブラリと一緒に作成されているケースもありますが、無ければ作成します。
※参考ページ

<linker>
<assembly fullname="System">
<type fullname="System.Net.Configuration.MailSettingsSectionGroup" preserve="all"/>
<type fullname="System.Net.Configuration.SmtpSection" preserve="all"/>
<type fullname="System.Net.Configuration.SmtpNetworkElement" preserve="all"/>
</assembly>
</linker>

既にある場合は、同様のノードに追加します。

追加Frameworkの指定手順

XcodeでビルドするときにFrameworkの追加設定が必要なことがあります。
Assets/Editor/PostBuildProcess.cs というファイルを作ります(ファイル名は任意ですが、パスはEditor以下である必要があります)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
 
public class PostBuildProcess {
 
	[PostProcessBuild(100)]
	public static void OnPostProcessBuild(BuildTarget target, string path)
	{
		if (target == BuildTarget.iOS)
		{
			PostProcessBuild_iOS (path);
		}
	}
 
	private static void PostProcessBuild_iOS( string path ){
		string projectPath = PBXProject.GetPBXProjectPath(path);
		PBXProject pbxProject = new PBXProject();
 
		pbxProject.ReadFromString(File.ReadAllText(projectPath));
		string target = pbxProject.TargetGuidByName("Unity-iPhone");
 
		pbxProject.AddFrameworkToProject(target, "AssetsLibrary.framework", false);
		pbxProject.AddFrameworkToProject(target, "MessageUI.framework", false);
		pbxProject.AddFrameworkToProject(target, "Accounts.framework", false);
		pbxProject.AddFrameworkToProject(target, "Social.framework", false);
		pbxProject.AddFrameworkToProject(target, "AddressBook.framework", false);
		pbxProject.AddFrameworkToProject(target, "AddressBookUI.framework", false);
 
		File.WriteAllText(projectPath, pbxProject.WriteToString());
	}
}

別の用途にも使えるので、覚え書きです。

Unityでメールを送信するアプリがAndroidで動かない問題

0
Filed under Unity
Tagged as ,

Unityで作ったアプリでメールを送信するコードを書き、Unity Editor上では動いているのだが、Androidでは送信されない、という問題が発生しました。
(検証バージョン Unity 5.6.1p3)

.NET 2.0にする

Unityからメールを送る仕組みは、SmtpClient, MailMessage 周りのクラスを使うと実装できます。
これらのクラスを使ってUnity Editor上では送信できるようにはなったのですが、Androidにいれてみるとメールを送信できない、という問題にハマりました。
結論から書くと、下記ページを参考に、Player Settings内にある、Configurationの、Api Compatibility Levelをいじると直るようです。

■参考URL:Sending email on android device | Unity Community
https://forum.unity.com/threads/sending-email-on-android-device.198795/

Unity Player Settings Configuration .net 2.0 subset
こちらを参考に「.NET 2.0 subset」となっている場合「.NET 2.0」にすると、あっさりと動くようになりました!

Mac/PC用のTHETAアプリメモ

0
Filed under Mac
Tagged as , ,

先日、THETA Vを見せていただく機会がありました!

撮影した動画ファイルをもらい、MacのTHETAアプリで変換しようとしたら、変換してくれない問題が発生しました。
「新しいアプリが必要なんだろうな」と想像はついたのでアプリでチェックしてみても、2.3.3で「これが最新のバージョン」と言われます。
RICOH THETA 2.3.3 ver check
それでもうまくいかない。。

2017年10月末時点での最新は3.1.2!

念のために、と思ってリコーのTHETAアプリサイトを見てみたところ、3.0系のバージョンが出ていました!
リリース履歴を見ると、2017年8月31日に3.0.0となっていて、これまでAIRで作られていたのですが、Electronで作り直されていました!
ここでバージョンチェックの断絶が起きていたようです。
このサイトから直接ダウンロードして、最新バージョンでTHETA Vの動画を変換してみたところ、無事できました!
そして、THETA Vの動画のクリアさに驚愕!

一瞬記憶が消えた後、、気がついたときにはポチッてました。 🙂

G360, insta360 one

ちなみに先日、360度カメラ用のジンバル「Feiyutech G360」も購入済みで、この組合せが現時点での最強コンビだろう、と思っています。

insta360 oneもかなり欲しいのですが、マイクのことを考えると、THETA Vかな、と。まだ踏み切れず、未購入です。

ちなみに、次に欲しいのは、LiveShell X。。360度配信をいろいろなところでしてみたい!

ディープラーニングの概要把握に最適な本!

0
Filed under
Tagged as ,

前からKindleで購入していたけど、先日出張中に読了した人工知能の本、これはかなりよかった!
Kindle Paperwhite AI 人工知能は人間を超えるか
それが、「人工知能は人間を超えるか」

なんとなく分かっていたディープラーニングの仕組みがしっかり分かり、且つ、ディープラーニングがこれからの世界でどれほどインパクトがあるものなのか、それが理解できました!
「特徴量を見つけ出す」ディープラーニングのすごさの例として「天気予報」をサンプルにした第5章は秀逸だと思います。

詳しくは引用しませんが、その他にも結構視点がニュートラルなので、これからディープラーニングとかAIとか知りたい人にはおすすめとして覚えておきたい書籍です!

思い出話

私のバックグラウンドですが、20年ぐらい前に大学在学中にいた研究室では、とある研究に「遺伝的アルゴリズム」とか「ニューラルネットワーク」とか使っていました。
ただ、それらの研究報告が「パラメータをこうしたらチョット良くなった」「ローカルミニマムに陥っているかもしれない」とかそういう進捗ばかりで、、正直そのときに感じた違和感の正体はこれだったのか!と、本書を読んで、再度確認できました。
あのときの研究で出したパラメータとかはある程度正しかったのだろうし、ローカルミニマムについてはしょうがないのだけど、それでも計算量自体が高速化、並列化されていけば人間が調整している事自体が無意味になっていくわけですし。
ただ、あの時の感覚があるから、今のディープラーニングの凄さも肌感覚として理解できているメリットもありますが。

ちょっと話がずれますが、Kindle Paperwhite、いつも室内で読んでたのですが、今回外出時に読んで、太陽光下での視認性のよさに感動しました!バックライト付けなくていいし、飛行機の消灯時とかでもバックライト付けるだけでいいし。今更だけど。

Kindle Paperwhite持って外出っていいですね!