我需要一種方法來讓用戶進入設置應用程序以禁用多任務手勢。我知道,在iOS版8,你可以通過編程的URL在Objective-C啓動設置程序:Unity iOS上的開放設置應用程序
NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString];
但我不知道如何得到這個網址在Unity與Application.OpenURL()使用
我需要一種方法來讓用戶進入設置應用程序以禁用多任務手勢。我知道,在iOS版8,你可以通過編程的URL在Objective-C啓動設置程序:Unity iOS上的開放設置應用程序
NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString];
但我不知道如何得到這個網址在Unity與Application.OpenURL()使用
你需要寫一個小的iOS插件,這裏是關於它的更多信息:http://docs.unity3d.com/Manual/PluginsForIOS.html
這裏是您的解決方案,問如果事情應該是不清楚的。
腳本/ 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
}
插件/式IO/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的想法,我創建一個空的XCode項目,並輸出字符串常量UIApplicationOpenSettingsURLString
,並在Unity中與Application.OpenURL()一起使用,無需使用插件。工作非常好。
常數UIApplicationOpenSettingsURLString
的值爲:「app-settings:」(不含配額)。
用途:Application.OpenURL("app-settings:")
直接從單位開
警告:使用硬編碼字符串是危險的,可以打破你的代碼,如果蘋果改變的常UIApplicationOpenSettingsURLString
值。它只是一個解決方法,而Unity不會爲C#代碼中的參考添加常量。
請不要在unity遊戲引擎相關的問題上使用unity標籤。在使用它之前閱讀標籤的描述通常是一個好主意。 –
對不起,下次我會再多關注 – Gilian