2015-05-03 59 views
2

我需要一種方法來讓用戶進入設置應用程序以禁用多任務手勢。我知道,在iOS版8,你可以通過編程的URL在Objective-C啓動設置程序:Unity iOS上的開放設置應用程序

NSURL * url = [NSURL URLWithString: UIApplicationOpenSettingsURLString]; 

但我不知道如何得到這個網址在Unity與Application.OpenURL()使用

+0

請不要在unity遊戲引擎相關的問題上使用unity標籤。在使用它之前閱讀標籤的描述通常是一個好主意。 –

+0

對不起,下次我會再多關注 – Gilian

回答

4

你需要寫一個小的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]; 
    } 
} 
+0

Thansk!我會嘗試! – Gilian

+0

我會嘗試打印這個URL來獲取它並使用Application.OpenURL()來不必使用插件;) – Gilian

+0

可以打印URL並使用Application.OpenURL()打開它,但仍需要一個插件來獲取URL,因爲Apple可能會更改URL,並且您的應用將會與硬編碼的URL斷開。 (明天我會分享該代碼) – JeanLuc

0

使用JeanLuc的想法,我創建一個空的XCode項目,並輸出字符串常量UIApplicationOpenSettingsURLString,並在Unity中與Application.OpenURL()一起使用,無需使用插件。工作非常好。

常數UIApplicationOpenSettingsURLString的值爲:「app-settings:」(不含配額)。

用途:Application.OpenURL("app-settings:")直接從單位開

警告:使用硬編碼字符串是危險的,可以打破你的代碼,如果蘋果改變的常UIApplicationOpenSettingsURLString值。它只是一個解決方法,而Unity不會爲C#代碼中的參考添加常量。

相關問題