If you downloaded the Adobe XMP Toolkit SDK, you can find an example of writing the XMP metadata in "ModifyingXMP.cpp" and an example of reading the already XMP-written file in "ReadingXMP.cpp" file. Note that I am using XMP-Toolkit-SDK-CC201607 version.
You need static files and header files to be included in your iOS project later. Read the instructions carefully on how to generate them, specifically on what kind of archs you need. In my case, I generated [arm64, armv7, armv7s] and [x86_64] separately and then lipo them together later.
Try and modify "ModifyingXMP.cpp" according to what you need. Include these source codes into your iOS app project as Objective-C++ (with .mm extension). Don't forget to include the header file, libXMPCoreStatic.a file, libXMPFilesStatic.a file, make a bridging header, and configure your project to import external static libs. If you don't understand what I am talking about, check these links:
https://forums.adobe.com/thread/1360320
How can I use an .a static library in swift?
Here is what it looks like in my demo project:

My implementation on XmpWriter.h:
#import <Foundation/Foundation.h>
@interface XmpWriter : NSObject
+(BOOL) writeXmp:(const char *) imageUrl Param1:(const char *) Param1 Param2:(float) param2 Param3:(float) Param3;
+(BOOL) readXmp:(const char *) imageUrl;
@end
In my XmpWriter.mm file, I modify the createXMPFromRDF()
to accept my parameters like:
SXMPMeta createXMPFromRDF(const char *Param1, float Param2, float Param3)
I hope you can get closer to what you want to achieve from here.