Unity IOS support


We are working on a cross-platform solution that would include the Pulse Engine and we implement IOS as well but I see that there is no native plugin for it in the solution. Is there any way to get it working in IOS?

Thank you

I have not looked at the iOS development process in a while
From what I understand, you need to write a custom apple/xcode script to build a dynamic lib that is iOS compliant. Its a pretty nitch process and I have not dug into it. Pulse does build static libraries, so you should be able to build the code base as is, then write the necessary xcode script to pull in everything for the iOS library… But then I am not sure if that is going to be Unity compliant or not… as it’s going to need to encapsulate the interfaces used by the C# used by Unity…

You might be able to use CMake on a Mac to generate an XCode project, then some how configure XCode to build an iOS compliant version of the PulseC project… I am really not sure. It’s probably a could of days of investigation/work/experimentation to get the process down, but we currently don’t have that on our near term milestones.

I have read the release notes version 4.2.0. It indicates that it does support iOS, however, I could not find version 4.2.0 on the repositories. How can I obtain version 4.2.0 of the engine which support iOS build?

Here is a older build with an iOS native libraries

I belive this asset only has windows and iOS

As part of our next unity release I will make sure all of our native platforms are a part of the asset
(Win32,Win64,WinARM64, Linux64, MacOS intel & atom, Android, iOS)

Thank you very much. I will try the package you sent in the post. Should I have any further question regarding building for iOS, will seek your advice again.

Just follow up on that. I used the package for IOS you shared, but it gave the following error:

EntryPointNotFoundException: Allocate assembly: type: member:(null)
PulseUnityEngine.BaseAllocate (System.Int32 model, System.String data_dir) (at Assets/PulsePhysiologyEngine/Scripts/PulseUnityEngine.cs:63)
Pulse.PulseEngineBase…ctor (Pulse.eModelType m, System.String data_dir) (at <8c06848ba3d4488281e2602f1faef351>:0)
PulseUnityEngine…ctor (Pulse.eModelType m, System.String data_dir) (at Assets/PulsePhysiologyEngine/Scripts/PulseUnityEngine.cs:24)
PulseEngineDriver.Start () (at Assets/PulsePhysiologyEngine/Scripts/PulseEngineDriver.cs:65)

Do you have any clue on how to fix it? Or when is the next unity release that consists IOS support?

Thanks in advance for your help!

I am going through the Unity Asset release process now
I will ensure the iOS binary works

I would love to hear any feedback you would have on what unity version the asset should be built on

Hey @Eason_Li

I have pushed up the latest binaries for all supported platforms (including iOS and macOS silicon)

You can check this repository out under your projects Assets/PulsePhysiologyEngine folder
This repository contains everything in the Unity Store Asset

I start out using the basic 3D application template
Then manually create the PulsePhysiologyEngine folder under the Assets folder
and check out this repository into that folder

See if you are able to deploy to iOS with this latest

Thank you so much for your quick response. Yes, it works perfectly fine right now. Much appreciated to your hard work!

Hi @abray, I also tried to update my unity project to use latest version from repository. It’s seems like android build broken.
Android logcat gives me:
2023/10/06 08:46:26.710 8147 8168 Error Unity DllNotFoundException: Unable to load DLL 'PulseC'. Tried the load the following dynamic libraries: Unable to load dynamic library 'PulseC' because of 'Failed to open the requested dynamic library (0x06000000) dlerror() = dlopen failed: library "PulseC" not found
2023/10/06 08:46:26.710 8147 8168 Error Unity at PulseUnityEngine.Allocate (System.Int32 model, System.String data_dir) [0x00000] in <00000000000000000000000000000000>:0
2023/10/06 08:46:26.710 8147 8168 Error Unity at Pulse.PulseEngineBase..ctor (Pulse.eModelType m, System.String data_dir) [0x00000] in <00000000000000000000000000000000>:0
2023/10/06 08:46:26.710 8147 8168 Error Unity at PulseEngineDriver.Start () [0x00000] in <00000000000000000000000000000000>:0

Is it just me or libraries for android broken again?

I did not try and run the latest vitals scene on my phone. I’ll give it a shot. Maybe I just need to update the C++ shared object.

What kind of device are you trying to run on?

Thank you! I’ll wait for updates then.
I actually don’t have physical device, so I tried to run on emulator (BlueStacks), previous version did okay.

Can you quickly check if replacing this shared objects in our asset gets it working for you

I assume you are building against the ARM64 version, if you need regular ARM, I can get you that shared object


Replacing shared object did help, it’s working now! Thank you!
I wonder if you going to replace the file in the repository, or I should just use that shared object that you sent?

I will now push that into the repository, Just wanted to make sure that was the problem

That makes sense, thanks for finding this!

Wonderful! Have a nice day :slight_smile:

Pushed to main

1 Like