Harpy_Xamarin.iOS — 新版本提醒

写在前面:

在实际开发中,应用内的版本更新提醒功能越来越成为不可缺少的基础特性,对于上架到 AppStoreiOS 应用来说,AppStore 在检测到应用有新版本时,用户打开 AppStore 时会给用户提示,但是对于没有上架到 AppStoreiOS 应用,或者并没有上架到特定商店的 Android 应用来说,App 内的版本更新提醒对于保持用户黏度,提醒用户新版本中包含的内容变得至关重要,今天就给大家介绍一个在 iOS 中普遍使用的版本更新的第三方库 Harpy。

Harpy

Harpy 会根据当前用户安装的 iOS 应用程序版本信息,检查 App Store 中当前可用的版本信息。如果有新版本可用,则会向用户显示更新提醒,通知他们可以更新的版本,并为他们提供更新应用程序的选项。

  • Harpy 支持常用的三位版本控制系统(例如: 1.0.0)
  • Harpy 还支持两位版本控制(例如: 1.0)
  • Harpy 还支持四位版本控制(例如: 1.0.0.0)
  • Harpy 仅适用于数字。

Features

  • 支持40多种语言的本地化 (Localization)
  • 预更新设备兼容性检查 (Device Compatibility)
  • 三种类型的提醒样式 (Screenshots & Alert Types)
  • 可选的委托方法处理用户点击操作 (Optional Delegate)

Screenshots

  • 第一张截图 forces 强制用户更新。
  • 第二张截图 option 为用户提供更新的应用程序的选项。
  • 第三张截图 skip 允许用户跳过当前更新的选项。
  • 三种选项由 HarpyAlertType 控制。
Harpy_Xamarin.iOS — 新版本提醒_第1张图片
forces.png
Harpy_Xamarin.iOS — 新版本提醒_第2张图片
option.png
Harpy_Xamarin.iOS — 新版本提醒_第3张图片
skip.png

Setup

  1. 在你的 iOS Project 中安装 Xamarin.iOS.Harpy Nuget
  2. 在你的 iOS ProjectAppDelegate 中,选择设置 AlertType
  3. 在你的 iOS ProjectAppDelegate 中,只调用一次 checkVersion 方法,为以下三个可以执行应用程序版本更新检查的地方进行一次检查更新:
  • checkVersion in FinishedLaunching
  • checkVersionDaily in OnActivated
  • checkVersionWeekly in OnActivated
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            this.Window.MakeKeyAndVisible();

            Harpy.SharedInstance.PresentingViewController = this.Window.RootViewController;
            Harpy.SharedInstance.WeakDelegate = this;
            Harpy.SharedInstance.AlertType = HarpyAlertType.Skip;
            Harpy.SharedInstance.DebugEnabled = true;

            Harpy.SharedInstance.CheckVersion();
            return true;
        }

        public override void OnActivated(UIApplication application)
        {
            /*
             Perform daily check for new version of your app
             Useful if user returns to you app from background after extended period of time
             Place in applicationDidBecomeActive:
             Also, performs version check on first launch.
            */
            //Harpy.SharedInstance.CheckVersionDaily();

            /*
             Perform weekly check for new version of your app
             Useful if you user returns to your app from background after extended period of time
             Place in applicationDidBecomeActive:
             Also, performs version check on first launch.
            */
            //Harpy.SharedInstance.CheckVersionWeekly();
        }

Differentiated Alerts for Patch, Minor, and Major Updates

如果你要为不同的版本更新设置不同类型的弹窗样式,如强制某次大版本或重大修复的更新,可以跳过某次小功能的添加,你可以在调用 checkVersion 方法之前将以下代码添加到你的设置之中:

            Harpy.SharedInstance.PatchUpdateAlertType = HarpyAlertType.Option; // <#alert_type#>
            Harpy.SharedInstance.MinorUpdateAlertType = HarpyAlertType.Skip; // <#alert_type#>
            Harpy.SharedInstance.MajorUpdateAlertType = HarpyAlertType.Force; // <#alert_type#>
            Harpy.SharedInstance.RevisionUpdateAlertType = HarpyAlertType.Option; // <#alert_type#>

Optional Delegate and Delegate Methods

如果您想要处理或跟踪最终用户的行为,可以重写以下委托方法:

        [Export("harpyDidShowUpdateDialog")]
        public virtual void HarpyDidShowUpdateDialog()
        {
        }

        [Export("harpyUserDidCancel")]
        public virtual void HarpyUserDidCancel()
        {
        }

        [Export("harpyUserDidLaunchAppStore")]
        public virtual void HarpyUserDidLaunchAppStore()
        {
        }

        [Export("harpyUserDidSkipVersion")]
        public virtual void HarpyUserDidSkipVersion()
        {
        }

如果你像自定义弹出窗 UI 样式,请使用以下委托方法获取新版本的本地化更新消息:

        [Export("harpyDidDetectNewVersionWithoutAlert:")]
        public virtual void HarpyDidDetectNewVersionWithoutAlert(string message)
        {
        }

Localization

  • Arabic
  • Armenian
  • Basque
  • Chinese (Simplified and Traditional)
  • Croatian
  • Czech
  • Danish
  • Dutch
  • English
  • Estonian
  • Finnish
  • French
  • German
  • Greek
  • Hebrew
  • Hungarian
  • Indonesian
  • Italian
  • Japanese
  • Korean
  • Latvian
  • Lithuanian
  • Malay
  • Norwegian (Bokmål)
  • Persian (Iran, Afghanistan, Persian)
  • Polish
  • Portuguese (Brazil and Portugal)
  • Russian
  • Serbian (Cyrillic and Latin)
  • Slovenian
  • Spanish
  • Swedish
  • Thai
  • Turkish
  • Ukrainian
  • Urdu
  • Vietnamese

如果你希望始终以某种语言显示版本更新弹出框,忽略 iOS 的语言设置(例如,在特定国家/地区发布的应用程序)。你可以像这样启用它:

            Harpy.SharedInstance.CountryCode = "CN";
            Harpy.SharedInstance.ForceLanguageLocalization = Constants.HarpyLanguageChineseSimplified;

Device Compatibility

如果应用程序更新可用,则 Harpy 会检查以确保用户设备上的 iOS 版本与应用程序更新所需的版本兼容。例如,如果用户在其设备上安装了iOS 9,但应用更新需要 iOS 10,则不会显示新版本提醒。这解决了有关应用更新的误报情况。

Test Harpy

暂时将 Info.plist 中的应用版本号字符串更改为比 App Store 中当前可用的版本更旧的版本。然后,重新 Build 并运行你的应用程序,你应该就可以看到版本更新提示。

如果您当前在商店中没有应用,请将您的 BundleID 更改为商店中已有的应用。在此示例应用程序中,我们使用 BaiduMap 应用程序的 BundleID : com.baidu.map.

Important Note on App Store Submissions

App Store 审核时并不会出现更新弹窗。

More

Harpy 的所有者在 2018年末 已经决定将停止对 Harpy 的维护,转于完全面堆 Siren 的维护,也写了一篇博客介绍了自己的心路历程,但是对于目前的功能来说还是能保障用户的正常使用。

After 6 years of Harpy and 4 years of Siren, I have decided to deprecate Harpy in favor of Siren. Why? Siren is written in Swift and has a feature set that is superior to that of Harpy. More information can be found on this Medium post. The repository will live on, however, there will be no further updates and no transfers of the codebase at this time.

Reference

  • Harpy_Xamarin.iOS Sample Project
  • The Future of my OSS Projects in 2019
  • Harpy
  • Siren

到这里在 使用 Harpy_Xamarin.iOS进行版本更新提示 就介绍完了,希望能对您有所帮助。


——End 有问题可以加我微信,大家一起讨论,加好友前请备注您的简称,谢谢!

你可能感兴趣的:(Harpy_Xamarin.iOS — 新版本提醒)