找回密码
 立即注册
查看: 363|回复: 0

Unity与IOS混合编程(二)

[复制链接]
发表于 2022-3-29 16:28 | 显示全部楼层 |阅读模式

unity&ios.jpeg

在unity项目中,如何打开ios app设置页面

    首先要用到unity调用ios代码:
    /// <summary>     /// 打开App设置页面     /// </summary>     [DllImport("__Internal")]     public static extern void OpenAppSettings();
    然后在xcode端找到UnityAppController类,在最底部加入代码:
//打开应用设置页面 extern "C" void OpenAppSettings() {    NSURL*url=[NSURL URLWithString:UIApplicationOpenSettingsURLString];    if([[UIApplication sharedApplication]canOpenURL:url]){        [[UIApplication sharedApplication]openURL:url];    } }
可以直接在extern "C" 后面接方法或者:
extern "C" {     //可以此处定义各种全局变量      void OpenAppSettings()      {        NSURL*url=[NSURL URLWithString:UIApplicationOpenSettingsURLString];        if([[UIApplication sharedApplication]canOpenURL:url]){              [[UIApplication sharedApplication]openURL:url];          }      } }
两个方法实现功能一样,第一种简洁,第二种可以在方法体类实现多个方法,定义多个变量,后面我要实现的功能就必须第二种和第一种混合来用。
在unity项目中,如何判断是否获取通知授权

    第一步同上,定义unity调用ios的方法名
    /// <summary>     /// 获取是否有通知权限     /// 回调函数:JudgeNotifyCallBack     /// </summary>     /// <returns></returns>     [DllImport("__Internal")]     public static extern void JudgeNotifyPermission();
    然后写入oc代码
//判断是否给了通知权限 #import <UserNotifications/UserNotifications.h> extern "C" void JudgeNotifyPermission(){     if (@available(iOS 10 , *))     {             [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {                     if (settings.authorizationStatus == UNAuthorizationStatusDenied ||                         settings.authorizationStatus == UNAuthorizationStatusNotDetermined)                     {                     /// 没有权限                         UnitySendMessage("IOSCube","JudgeNotifyCallBack","0");                     } else {                     ///已经开启通知权限                         UnitySendMessage("IOSCube","JudgeNotifyCallBack","1");                     }             }];             /// 判断权限执行一次             UnitySendMessage("IOSCube","JudgeNotifyCallBack","-1");     } }
    这里需要import一个UserNotifications库,注意在oc++文件中只能用#import引入库,不能用<>,这种会直接报错。另外引入位置尽量提前。

这里用到了ios回调unity方法
UnitySendMessage("IOSCube","JudgeNotifyCallBack","1");
三个参数的含义上一篇文章已经介绍,不再赘述。
编译出错不要慌,先clear,在build。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 15:47 , Processed in 0.089939 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表