Unity 添加ios原生弹窗UIAlertController + 跳转app自己的系统设置界面 (>=ios10)

直接上代码

static UIAlertController* uiSettingAlert = nil;
void ShowSettingAlert(const char* title, const char* content, const char* leftTxt, const char* rightTxt)
    {
        if (uiSettingAlert == nil) {
            uiSettingAlert = [UIAlertController alertControllerWithTitle:[[NSString alloc] initWithUTF8String:title] message:[[NSString alloc] initWithUTF8String:content] preferredStyle:UIAlertControllerStyleAlert];
            //为alert增加一个Action,
            UIAlertAction *okActin=[UIAlertAction actionWithTitle:[[NSString alloc] initWithUTF8String:rightTxt] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
                NSLog(@"你点击了确定");
                Go2AppSettings();
                // 不要dismiss否则崩溃
//                [uiSettingAlert dismissViewControllerAnimated:NO completion:nil];
                // uiSettingAlert = nil;
            }];
            [uiSettingAlert addAction:okActin];
            //为alert增加一个‘取消’按钮
            UIAlertAction *cancelAction=[UIAlertAction actionWithTitle:[[NSString alloc] initWithUTF8String:leftTxt] style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action){
                NSLog(@"你点击了取消");
                // 不要dismiss否则崩溃
//                [uiSettingAlert dismissViewControllerAnimated:NO completion:nil];
                // uiSettingAlert = nil;
            }];
            [uiSettingAlert addAction:cancelAction];
        }
        //显示
        [UnityGetGLViewController() presentViewController:uiSettingAlert animated:YES completion:nil];
    }

    // 跳转到应用自己的设置界面,注意ios版本 >= 10
    void Go2AppSettings()
    {
        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
        if( [[UIApplication sharedApplication]canOpenURL:url] ) {
            [[UIApplication sharedApplication]openURL:url options:@{} completionHandler:nil];
        }
    }

unity调用代码


using System.Runtime.InteropServices;
using UnityEngine;


[DllImport("__Internal")]
private static extern void ShowSettingAlert(string title, string content, string leftTxt, string rightTxt);

public class Test : MonoBehaviour
{
    public void OpenIOSAlertView()
    {
        string title = "“标题";
        string content = "内容";
        string cancelTxt = "取消";
        string okTxt = "去设置";
        ShowSettingAlert(title, content, cancelTxt, okTxt);
    }
}

IOS原生弹窗参考

https://www.jianshu.com/p/75cef8007e75

https://www.jianshu.com/p/24255cd669b1

https://www.jianshu.com/p/af6f8260a811

https://www.jianshu.com/p/011d7f04729e

https://www.cnblogs.com/feelingzt/p/5354960.html

https://blog.csdn.net/lolita0164/article/details/79290564

https://stackoverflow.com/questions/44012861/ios-openurl-to-uiapplicationopensettingsurlstring-preferences-app-crashes

https://www.jianshu.com/p/9e90cb866fdf

https://www.jianshu.com/p/455d5f0b3656

IOS跳转App自己的系统设置(>= 10)

https://blog.csdn.net/a910577347/article/details/78180274

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GrimRaider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值