根据iOS SDK文档,IOS上的Facebook登录应首先尝试Facebook应用程序(如果已安装),并且只有在未安装时才会回退到Web视图。但是,对于我们的Unity应用程序,它立即打开Web视图。虽然不重要,但这肯定会伤害用户体验(通过要求他提供他可能不会记得的电子邮件/密码),所以我们调查了它并修复了Unity SDK中的两个错误。
我在这里分享它是为了帮助任何有同样问题的开发者,并且因为这是Facebook Unity SDK团队的唯一反馈渠道(如果我错了,请纠正我)。
答案 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);
}
}
}