Appcenter 分发应用内更新在 Xamarin.iOS 中不起作用
Appcenter distribute in-app updates not working in Xamarin.iOS
我正在尝试使用 Visual Studio AppCenter 分发内部 iOS 应用程序(使用 Xamarin.iOS 构建),但似乎无法使应用程序内更新正常工作。
当我下载并安装该应用程序(通过电子邮件 link)时,浏览器从未打开以注册应用程序内更新,并且当我向该组分发新版本时,该应用程序不提供一个更新。
我已按照说明进行操作 here。
我添加了 info.plist 条目并启动了 appcenter 分发模块。 Analytics + 崩溃报告工作正常,因此 AppCenter ID 正常。
如有任何帮助,我们将不胜感激。
@lavanya 可能有很多不同的原因可以解释为什么它们不工作。正如您在注释 here and here、
中看到的
您的测试人员是否从默认的 safari 浏览器下载应用程序?
是否在其设置中为 Safari 启用了 cookie?
你的应用还没有在 App Store 上架吗?
能否提供更多详细信息?因为如果您对这些问题中的任何一个回答否,您将无法在 iOS
上使用 MS App Center 的应用内更新
如果你想创建自己的VersionChecker,在第一个view controller的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; }
}
请在使用前测试一下,我可以看到它可能无法正常工作的实例
我正在尝试使用 Visual Studio AppCenter 分发内部 iOS 应用程序(使用 Xamarin.iOS 构建),但似乎无法使应用程序内更新正常工作。
当我下载并安装该应用程序(通过电子邮件 link)时,浏览器从未打开以注册应用程序内更新,并且当我向该组分发新版本时,该应用程序不提供一个更新。
我已按照说明进行操作 here。
我添加了 info.plist 条目并启动了 appcenter 分发模块。 Analytics + 崩溃报告工作正常,因此 AppCenter ID 正常。
如有任何帮助,我们将不胜感激。
@lavanya 可能有很多不同的原因可以解释为什么它们不工作。正如您在注释 here and here、
中看到的您的测试人员是否从默认的 safari 浏览器下载应用程序?
是否在其设置中为 Safari 启用了 cookie?
你的应用还没有在 App Store 上架吗?
能否提供更多详细信息?因为如果您对这些问题中的任何一个回答否,您将无法在 iOS
上使用 MS App Center 的应用内更新如果你想创建自己的VersionChecker,在第一个view controller的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; }
}
请在使用前测试一下,我可以看到它可能无法正常工作的实例