问题 支持iOS 7与iOS 8兼容的应用程序,包括扩展


我使用Today小部件扩展为iOS 8构建了一个应用程序。我想知道如何确保iOS 7的用户仍然可以下载和使用该应用程序。

我是否将今日小部件开发目标设为iOS 8,但实际的应用开发目标是iOS 7?


7291
2017-09-22 00:57


起源



答案:


您正走在正确的轨道上:该应用需要使用iOS 8 SDK构建,并且可以拥有更早的部署目标。小部件的部署目标是iOS 8,在iOS 7设备上将被忽略。您也可以在模拟器中轻松验证。

如果您在窗口小部件和应用程序之间共享代码,则此代码显然需要在iOS 7和8中运行。具体来说,如果您使用框架在您的应用程序和窗口小部件之间共享代码(即 Apple推荐),你应该读 这个文件。但是,只要您定位iOS 7,似乎就更容易使用(自己的,嵌入式)框架。


9
2017-09-23 08:32





  1. 检查操作系统版本并为其执行回退行为

    NSString * osVersion = [[UIDevice currentDevice] systemVersion];

  2. 检查您是否可以访问要使用的功能:

    [YourClass respondsToSelector:@selector(yourDesiredFunction)]

Apple的SDK兼容性指南: https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Introduction/Introduction.html


0
2017-09-22 07:07



我发现#2只是让框架可选,但我仍然对今天的小部件感到困惑。如何为完全独立的目标制作后备行为? - Hamlier Walp
在第一个选项中使用与NSFoundationVersionNumber_iOS_7_1相比更好 - Mike Glukhov


答案:


您正走在正确的轨道上:该应用需要使用iOS 8 SDK构建,并且可以拥有更早的部署目标。小部件的部署目标是iOS 8,在iOS 7设备上将被忽略。您也可以在模拟器中轻松验证。

如果您在窗口小部件和应用程序之间共享代码,则此代码显然需要在iOS 7和8中运行。具体来说,如果您使用框架在您的应用程序和窗口小部件之间共享代码(即 Apple推荐),你应该读 这个文件。但是,只要您定位iOS 7,似乎就更容易使用(自己的,嵌入式)框架。


9
2017-09-23 08:32





  1. 检查操作系统版本并为其执行回退行为

    NSString * osVersion = [[UIDevice currentDevice] systemVersion];

  2. 检查您是否可以访问要使用的功能:

    [YourClass respondsToSelector:@selector(yourDesiredFunction)]

Apple的SDK兼容性指南: https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Introduction/Introduction.html


0
2017-09-22 07:07



我发现#2只是让框架可选,但我仍然对今天的小部件感到困惑。如何为完全独立的目标制作后备行为? - Hamlier Walp
在第一个选项中使用与NSFoundationVersionNumber_iOS_7_1相比更好 - Mike Glukhov


hagi是对的,但我们已经尝试在ios7上运行带有框架的应用程序并且它有效。但最好的方法是弱链接和检查。

这是一个糟糕的场景,因为在我们的框架中几乎都是非UI代码:模型,解析器和加载。


0
2017-12-11 11:42