美文网首页
swiftUI/OC 原生项目接入Untiy3d项目走过的坑

swiftUI/OC 原生项目接入Untiy3d项目走过的坑

作者: River_YYH | 来源:发表于2023-04-19 17:04 被阅读0次

1、swiftUI 如何把Unity3的项目集成到原生项目里面下面文章链接足够了
整合 Unity 到 SwiftUI App
2、如何将Untiy工程集成到OC项目中下面文章足够了
将 Unity 集成到原生 iOS 应用程序中(2020+)
3、在Unity项目中使用了腾讯直播播放器,发现直播视频会崩溃,只有偶尔能够播放。
问题排查发现 TXFFmpeg.framework和TXSoundTouch.framework这两个签名跟跟自己签名不一样,重新给这两个库签名后播放正常。
4、集成Unity的项目后,上传Appstore时候UnityFramwork的 Build phases >Embed Framwork 不能有framwor都需要移动到主工程中

截屏2023-04-20 17.43.33.png

5、如果在导入UnityFramework头文件时候发现找不到,请检查UnityFramework.h文件是否是public


截屏2023-04-20 17.49.40.png

5、第三方库如何实现签名

1.查看framework的签名证书命令:

codesign -d -vv xxxxx.framework

2.删除原有的签名

进入到XX.framwork文件夹内,删除_CodeSignature文件夹

3.查看本机可用的签名文件,命令:

/usr/bin/security find-identity -v -p codesigning
4.使用签名文件签名命令:
codesign -fs "iPhone Developer: ... (...)" xxxxx.framework

6、Unity3d项目使用了libUniWebView.a 跳转H5界面出现崩溃
原因分析

1、swfitUI项目没有Appdegate 也没有UIWindow,所以在启动Unity项目管理类
声明   var window: UIWindow?
        self.window  = unityFramework?.appController().window;
2 、添加下面两个函数
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        return true
    }
    
   @objc public func rootViewController() -> UIViewController {
        
        return UnityManager.shared.unityFramework?.appController().rootViewController ?? UIViewController();
    }
3、如果是OC项目就需要实现在Appdelegate里面新增下面方法
- (UIViewController *) rootViewController {
return self.unityAppController.rootViewController;
}

参考链接
Integrating Unity into native iOS applications

7、IOS动态更换应用图标
参考资料
https://juejin.cn/post/7133526724515463175

 代码swift方法更改图标会有弹窗提示
采用OC实现方法实现 了更改图标不提示
///执行换图标的方法
+ (void)exchangeAlternateIconWithName:(NSString *)iconName completeBlock:(void (^)(NSError * _Nullable error))completed {
   
   if ([[UIApplication sharedApplication] respondsToSelector:@selector(supportsAlternateIcons)] &&
       [[UIApplication sharedApplication] supportsAlternateIcons])
   {
       NSMutableString *selectorString = [[NSMutableString alloc] initWithCapacity:40];
       [selectorString appendString:@"_setAlternate"];
       [selectorString appendString:@"IconName:"];
       [selectorString appendString:@"completionHandler:"];
       
       SEL selector = NSSelectorFromString(selectorString);
       IMP imp = [[UIApplication sharedApplication] methodForSelector:selector];
       void (*func)(id, SEL, id, id) = (void *)imp;
       if (func)
       {
           func([UIApplication sharedApplication], selector, iconName, ^(NSError * _Nullable error) {
               completed(error);
           });
       }
   }
   
}

苹果后台更改icon

相关文章

网友评论

      本文标题:swiftUI/OC 原生项目接入Untiy3d项目走过的坑

      本文链接:https://www.haomeiwen.com/subject/vysljdtx.html