在Unity iOS上打开设置应用程序

我需要一种方法来使用户进入设置应用程序来禁用多任务手势。 我知道,在iOS 8中,您可以通过Objective-C中的URL以编程方式启动“设置”应用程序:

NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString]; 

但我不知道如何得到这个URL在Unity中使用Application.OpenURL()

您需要为此编写一个小型的iOS插件,这里有更多关于它的信息: http : //docs.unity3d.com/Manual/PluginsForIOS.html

这是你的解决scheme,问是否应该不清楚。

脚本/ Example.cs

 using UnityEngine; public class Example { public void OpenSettings() { #if UNITY_IPHONE string url = MyNativeBindings.GetSettingsURL(); Debug.Log("the settings url is:" + url); Application.OpenURL(url); #endif } } 

插件/ MyNativeBindings.cs

 public class MyNativeBindings { #if UNITY_IPHONE [DllImport ("__Internal")] public static extern string GetSettingsURL(); [DllImport ("__Internal")] public static extern void OpenSettings(); #endif } 

插件/ iOS版/ MyNativeBindings.mm

 extern "C" { // Helper method to create C string copy char* MakeStringCopy (NSString* nsstring) { if (nsstring == NULL) { return NULL; } // convert from NSString to char with utf8 encoding const char* string = [nsstring cStringUsingEncoding:NSUTF8StringEncoding]; if (string == NULL) { return NULL; } // create char copy with malloc and strcpy char* res = (char*)malloc(strlen(string) + 1); strcpy(res, string); return res; } const char* GetSettingsURL () { NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString]; return MakeStringCopy(url.absoluteString); } void OpenSettings () { NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString]; [[UIApplication sharedApplication] openURL: url]; } } 

使用JeanLuc的思想,我创build一个空的XCode项目,并打印string常量UIApplicationOpenSettingsURLString并在Unity中使用Application.OpenURL()来不必使用插件。 工作非常好。

常量UIApplicationOpenSettingsURLString的值是:“app-settings:”(没有配额)。

使用: Application.OpenURL("app-settings:")从统一直接打开

警告:硬编码string的使用是危险的,如果Apple更改常量UIApplicationOpenSettingsURLString的值,可能会破坏您的代码。 它只是一个解决方法,而Unity不会为C#代码中的参考添加常量。