Unity Facebook集成不使用iOS Facebook应用程序登录

时间:2014-09-26 08:05:08

标签: facebook-unity-sdk

根据iOS SDK文档,IOS上的Facebook登录应首先尝试Facebook应用程序(如果已安装),并且只有在未安装时才会回退到Web视图。但是,对于我们的Unity应用程序,它立即打开Web视图。虽然不重要,但这肯定会伤害用户体验(通过要求他提供他可能不会记得的电子邮件/密码),所以我们调查了它并修复了Unity SDK中的两个错误。

我在这里分享它是为了帮助任何有同样问题的开发者,并且因为这是Facebook Unity SDK团队的唯一反馈渠道(如果我错了,请纠正我)。

2 个答案:

答案 0 :(得分:0)

这是第一个问题:

症状:无论是否在“Facebook设置”资产中设置了“URL Scheme Suffix”,iOS设备上的Unity登录都不会使用已安​​装的Facebook应用程序进行登录。

原因:FacebookProstprocessor在更新Info.plist时非常害羞,如果已存在,则不会添加“CFBundleURLTypes”条目(在我们的案例中,Fiksu后处理器在FB之前放置了自己的东西)。

修复(使用自己的路径):

diff --git a/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs b/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs
index 7cd6d38..b5e4876 100644
--- a/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs
+++ b/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs
@@ -89,8 +89,6 @@ namespace UnityEditor.FacebookEditor


             */
-            if(!HasKey(dict, "CFBundleURLTypes"))
-            {
             AddChildElement(doc, dict, "key", "CFBundleURLTypes");
             var urlSchemeTop = AddChildElement(doc, dict, "array");
             {
@@ -115,7 +113,6 @@ namespace UnityEditor.FacebookEditor
                     }
                 }
             }
-            }


             doc.Save(fullPath);

答案 1 :(得分:0)

第二期

症状:如果设置了“URL Scheme Suffix”,则iOS设备上的Unity登录不使用已安装的Facebook应用程序进行登录。

原因:FacebookProstprocessor不会在“CFBundleURLTypes”条目中写入后缀。

修复(使用自己的路径):

diff --git a/prototype/Assets/Facebook/Editor/FacebookPostprocess.cs b/prototype/Assets/Facebook/Editor/FacebookPostprocess.cs
index b69233f..b299905 100644
--- a/prototype/Assets/Facebook/Editor/FacebookPostprocess.cs
+++ b/prototype/Assets/Facebook/Editor/FacebookPostprocess.cs
@@ -34,7 +34,7 @@ namespace UnityEditor.FacebookEditor
                 }
                 project.Save();

-                PlistMod.UpdatePlist(path, FBSettings.AppId, FBSettings.AllAppIds);
+                PlistMod.UpdatePlist(path, FBSettings.AppId, FBSettings.AllAppIds, FBSettings.IosURLSuffix);
                 FixupFiles.FixSimulator(path);
                 FixupFiles.AddVersionDefine(path);
                 FixupFiles.FixColdStart(path);
diff --git a/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs b/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs
index f5ca29a..7cd6d38 100644
--- a/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs
+++ b/prototype/Assets/Facebook/Editor/iOS/PlistMod.cs
@@ -44,7 +44,7 @@ namespace UnityEditor.FacebookEditor
             return false;
         }

-        public static void UpdatePlist(string path, string appId, string[] allPossibleAppIds)
+        public static void UpdatePlist(string path, string appId, string[] allPossibleAppIds, string iosUrlSuffix)
         {
             const string fileName = "Info.plist";
             string fullPath = Path.Combine(path, fileName);
@@ -101,7 +101,16 @@ namespace UnityEditor.FacebookEditor
                         {
                             foreach(string currAppId in allPossibleAppIds)
                             {
-                                AddChildElement(doc, innerArray, "string", "fb" + currAppId);
+                                string schema;
+                                if (currAppId == appId && iosUrlSuffix != "")
+                                {
+                                    schema = "fb" + currAppId + iosUrlSuffix;
+                                }
+                                else
+                                {
+                                    schema = "fb" + currAppId;
+                                }
+                                AddChildElement(doc, innerArray, "string", schema);
                             }
                         }
                     }