2

我正在尝试使用 Visual Studio AppCenter 分发内部 iOS 应用程序(使用 Xamarin.iOS 构建),但似乎无法让应用程序内更新正常工作。

当我下载并安装应用程序(通过电子邮件链接)时,浏览器永远不会打开以注册应用程序内更新,并且当我向该组分发新版本时,该应用程序不提供更新。

我已按照此处的说明进行操作。

我添加了 info.plist 条目并启动了 appcenter 分发模块。Analytics + Crash 报告工作正常,因此 AppCenter ID 很好。

任何帮助,将不胜感激。

4

2 回答 2

0

@lavanya 关于他们为什么不工作可能有很多不同的原因。正如您在此处此处的注释中看到的那样,

  1. 您的测试人员是否从默认的 Safari 浏览器下载了该应用程序?

  2. 是否在其设置中为 Safari 启用了 cookie?

  3. 您的应用还没有在 App Store 上架吗?

你能提供更多细节吗?因为如果您对这些问题中的任何一个回答“否”,您将无法在 iOS 上使用 MS App Center 的应用内更新

于 2019-06-02T11:48:20.597 回答
0

如果要创建自己的VersionChecker,在第一个视图控制器的ViewDidLoad的override中,可以调用CheckVersion()函数

public override void ViewDidLoad()
{        
    base.ViewDidLoad();
    CheckVersion();
    OtherCode();
}

然后在 CheckVersion 函数中你可以做这样的事情

        public async void CheckVersion()
        {
            var newVersionAsString = new VersionObject();
            string responseContent = string.Empty;

            using (HttpClient httpClient = new HttpClient())
            {
                try
                {
                    var versionCheckUri = "https://gist.githubusercontent.com/saamerm/af01aec0187d38a22fdd9b4378afc9c3/raw/680332a9a45eb015bc17fbf817fbac537348e3d4/Version.json"
                    using (HttpResponseMessage httpResponse = await httpClient.GetAsync(versionCheckUri))
                    {
                        if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
                        {
                            responseContent = await httpResponse.Content.ReadAsStringAsync();
                            newVersionAsString = JsonConvert.DeserializeObject<VersionObject>(responseContent);
                        }
                    }
                }
                catch (Exception)
                {
                }
            }

            var currentVersion = new Version(NSBundle.MainBundle.InfoDictionary["CFBundleShortVersionString"].ToString());

            if (currentVersion != null && !string.IsNullOrWhiteSpace(newVersionAsString) && (new Version(newVersionAsString.latestVersion)) > currentVersion)
            {
                string AppleStoreAppUrl = "itms-apps://itunes.apple.com/us/app/pages/{YOURAPPURL}?mt=8";
                var alert = new AlertView { ViewController = this, Title = "Update Required", Message = "To continue using this mobile app, please install the latest version." };
                alert.AddAction("Update Now", ActionStyle.Cancel, (action) => { UIApplication.SharedApplication.OpenUrl(new NSUrl(AppleStoreAppUrl)); this.Dispose(); }).Show();
            }

我们从 jsonutils.com 获得的 VersionObject

 public class VersionObject
    {
        public string latestVersion { get; set; }
    }

请在使用前测试一下,我可以看到它可能无法正常工作的实例

于 2019-06-03T22:58:42.620 回答