Xamarin.iOS使用itunes信息更新版本更新

    之前未了解苹果文档中提供了一份itunes网站的http接口api,利用这些api可以轻易的访问到itunes上app应用的信息,对推荐应用,版本信息描述等有所帮助,而不用通过自身平台的方式来提供接口。

   做过的项目中,由于平台没有区分安卓与iOS更新机制的差异,而忽略了iOS应用的更新提醒功能,因此想到借助itunes开放api来获取信息。

1.官方相关文档

www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.htm

2.使用

1)api链接:http://itunes.apple.com/lookup?id=你的应用程序的ID】


2)根据应用ID来获取出来的是精确的信息,应用【yelp】的信息

http://itunes.apple.com/lookup?id=284910350 

看看,json数据结构 ,使用System.Runtime.Serialization.Json解析json数据

根据需要添加数据模型,以下代码:

<span style="font-family:SimSun;">using System.IO;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.Text;
using System.Collections.Generic;</span>
//itunes信息数据结构
	[DataContract]
	public class AppResult
	{
		[DataMember (Name = "resultCount")]
		public string ResultCount{ get; set; }

		[DataMember (Name = "results")]
		public List<AppInfo> Info{ get; set; }
	}

	[DataContract]
	public class AppInfo
	{
		[DataMember (Name = "releaseNotes")]
		public string Content{ get; set; }

		[DataMember (Name = "version")]
		public string Version{ get; set; }

		[DataMember (Name = "trackName")]
		public string Name{ get; set; }
	}

3)字符版本比较

清楚应该获取哪个版本号来做版本对比,itunes上使用的是公开版本号,对应key为【CFBundleShortVersionString】,想了解两个版本

的区别,可看版本号管理



简单的比对代码:

public static bool HasNewVersion(string oldVersion,string newVersion)
		{
			try {
				if (!string.IsNullOrEmpty (newVersion) && newVersion.Length == 5) {
					float oldFloat = 0f,newFloat = 0f;
					float.TryParse(oldVersion.Replace(".",""),out oldFloat);
					float.TryParse(newVersion.Replace(".",""),out newFloat);
					if(newFloat > oldFloat){
						return true;
					}
					return false;
				} else {
					return false;
				}
			} catch (Exception ex) {
				Log.Error (ex.Message);
				return false;
			}
		}

4)访问Demo

partial void UpdataButton_TouchUpInside (UIButton sender)
		{
			System.Threading.ThreadPool.QueueUserWorkItem ((s) => {
				//当前app版本【8.0.0】
				var oldVerison = NSBundle.MainBundle.InfoDictionary.ObjectForKey (
					new NSString ("CFBundleShortVersionString")).ToString ();

				//获取itunes上信息
				AppResult result = null; 
				var url = "http://itunes.apple.com/lookup?id=284910350";
				var data = NSData.FromUrl (NSUrl.FromString (url));
				Console.WriteLine ("data" + data.ToString ());
				var serializer = new DataContractJsonSerializer (typeof(AppResult));
				using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (data.ToString ()))) {
					result = (AppResult)serializer.ReadObject (stream);
				}
				this.InvokeOnMainThread (() => {
					try {
						if (result != null && result.Info != null && result.Info.Count > 0) {
							var model = result.Info [0];
							if(this.HasNewVersion(oldVerison,model.Version)){
								UIAlertView alertView = new UIAlertView (string.Format ("发现新版本(【Yelp】{0})", model.Version),
									model.Content, null, "关闭", "更新");
								alertView.Show ();
								alertView.Clicked += (obj, e) => {
									if (e.ButtonIndex == 1) {
										//应用地址
									}
								};
							}
						}
					} catch (Exception ex) {
						Console.WriteLine ("Error>>" + ex.Message);
					}

				});
			});
		}

效果图



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值