LoginSignup
1
0

More than 1 year has passed since last update.

UnityプロジェクトにiOSのWidgetを載せる

Last updated at Posted at 2022-09-04

環境
Unity 2020.3
Xcode 13.4および14 beta6

UnityからXcodeに書き出したプロジェクトにWidgetを載せる方法です。この先に進む前にUnityからSwiftを呼び出せるようにしておいてください。[Unity Swift 連携]などででてくるはずです。あと対象のプロジェクトがWidget無しでビルドに成功することを確認しておいてください。
Xcodeのメニュー、File > New > Target...からスクロールで下の方にあるWidget Extensionを選択、追加
ProjectがUnity-iPhoneになっているのを確認
Product Name widgetnameのコピー.jpg

左カラムのUnity-iPhoneを選択してTARGETSのwidgetを選択して対象iosのバージョンをUnity-iPhoneと揃える
以下の図のwidgetのArchitecturesをStandardArchitectureに変更
2.jpg
これでビルドしてみて正常にビルドされることを確認。
新規にwidgetフォルダ内にSwiftPlugin.mm SwiftPlugin.swiftとwidget.swiftの両方からアクセスできるAppDataStore.swiftを作る

元アプリからWidgetへの情報の送りかたは C# > SwiftPlugin.mm(Objective-c) > SwiftPlugin.swift > NSUserDefault > AppDateStore.swiftからUserDefault読み出し、という感じ。最初CoreDataでやろうとしたけどどうしてもエラーが取れなかった。あと元アプリとWidgetは完全に別扱いなのでUserDefault使うときはAppGroup設定しないと同じとこに読み書きできません。

widget関連のファイルとSwiftPluginの右カラムで設定するTarget Menbershipの設定は非常に厳密なので必ず以下のように設定。一個でもかけ違うとハマるので注意。ここで3日ハマってます。
fcwidget1.jpg
fcwidget2.jpg
fcwidget3.jpg
fcwidget4.jpg
fcwidget5.jpg
これでSwiftPlugin.mm -> Swiftplugin.swiftからAppDataStore.swiftの関数を呼び出すことができるようになる。AppDataStore.swiftを通してUnity-iPhone、UnityFramework、widgetExtentionがやりとりするイメージ(だと思う)。 

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0