ipad air 2 release(如何开发一个)

经验攻略 bvnghjyi7692 2024-04-11 04:04 3 0

一、如何开发一个***AVPlayer***iPad***程序

AirPlay并不是新东西,它在 iOS 4.3 SDK中就存在了。但AirPlay API中不断有新的东西加入。其中一个有趣新特性是 iPad程序能通过 Apple TV 2播放来自 iOS设备上的内容,或者镜像iPad 2上的屏幕内容。

简而言之,AirPlay就是将媒体内容投放到高清显示器(电视)或高清音效系统上。Apple TV 2则是用于连接 iOS设备或 iTunes与高清设备之间的桥梁。

随着 iOS 5的出现,任何使用 AV Foundation类的程序都能从程序中投放音视频内容到 Apple TV。你可以用MPMoviewPlayerController通过 AirPlay将当前正在播放的内容投影到高清电视或其它高清显示设备上。另一个进步是从UIWebView投放视频,这是激动人心的改进,因为这意味着我们可以直接从 web上将在线的音视频投影到电视或者 Apple TV 2上。

使用 AVFoundation投影视频内容

要在应用程序中使用 AVFoundation,需要实现 AVPlayer并设置 allowsAirPlayVideo为 YES以开启 AirPlay,或者设置为NO以关闭 AirPlay,如以下代码所示:

-(BOOL)setAirPlay:(BOOL)airplayMode{

return self.player.allowsAirPlayVideo=airplayMode;

}

编写应用程序

为了演示如何创建 AVPlayer应用程序以及实现 AirPlay,我们将创建一个 Single View Application(注意勾选 UseStoryboards),新建一个 AVPlayer类并实现 AirPlay特性。

创建一个 Single View Application。目标类型可以选择 iPhone、iPod或者 iPad。创建项目之后,再导入 AV Foundation框架。

接着创建一个新 class,命名为 Player,并继承 UIView类。在头文件中,加入 AVPlayer类并增加一个 AVPlayer属性。如下列代码所示。

@class AVPlayer;

@interface Player: UIView

@property(nonatomic, strong) AVPlayer* player;

接下来就是实现 Player类。

我们实现了最基本的 AVPlayer需要实现的最起码的 4个方法,同时还提供了一个方法作为我们的 AirPlay开关。

首先我们需要一个 AVLayer类的包装类。该类是一个 CALayer子类,用于对媒体的可视内容进行管理。创建包装类的代码如下:

+(Class)layerClass{

return [AVPlayerLayer class];

}

然后为需要一个方法,实例化一个 AVPlayer对象(我们在头文件中定义的)。如下列代码所示。

-(AVPlayer*) player{

return [(AVPlayerLayer*)[self layer] player];

}

在 setPlayer方法中,如下列代码所示,有一个 AVPlayer参数,用于将一个 AVPlayer实例添加到 UIView。这个 UIView子类,将用在主 View Controller中。

-(void)setPlayer:(AVPlayer*)player{

[(AVPlayerLayer*)[self layer] setPlayer:player];

}

这个类的最后一个方法是 setAirPlay方法。其参数将用于指定 AVPlayer UIView(Player)的allowsAirPlayVideo属性。如以下代码所示。

-(BOOL)setAirPlay:(BOOL)airplayMode{

return self.player.allowsAirPlayVideo=airplayMode;

}

为视频的输出指定图层(AVPLayerLayer)时,可以指定任意数量的图层,只要能方便控制内容显示。比如说处理音频和视频之间的时间同步。通过setDisplayMode,你可以设置用于显示的图层,先创建一个 AVPlayerLayer对象作为显示图层,然后修改它的属性。默认是AVLayerVideoGravityResizeAspect属性,另外也可以设置 AVLayerVideoGravityResizeAspectFill属性和AVLayerVideoGravityResize属性。 AVLayerVideoGravityResizeAspect保持视频的宽高比并使播放内容自动适应播放窗口的大小。AVLayerVideoGravityResizeAspectFill和前者类似,但它是以播放内容填充而不是适应播放窗口的大小。最后一个值会拉伸播放内容以适应播放窗口。

Player类的完整代码如下:

#import<UIKit/UIKit.h>

#import<AVFoundation/AVFoundation.h>

@class AVPlayer;

@interface Player: UIView

@property(nonatomic, strong) AVPlayer* player;

-(BOOL) setAirPlay:(BOOL) airplayMode;

@end

#import"Player.h"

#import<AVFoundation/AVFoundation.h>

@implementation Player

+(Class)layerClass{

return [AVPlayerLayer class];

}

-(AVPlayer*) player{

return [(AVPlayerLayer*)[self layer] player];

}

-(void)setPlayer:(AVPlayer*)player{

[(AVPlayerLayer*)[self layer] setPlayer:player];

}

//Enable or disable AirPlay mode

-(BOOL)setAirPlay:(BOOL)airplayMode{

return self.player.allowsAirPlayVideo=airplayMode;

}

@end

在程序中使用 Player(UIView子类)

上述代码包括了Player(AVPlayer的 UIView子类)的.h文件和.m文件。

要在一个 UIViewController中使用这个 AVPlayer视图,打开 Xcode的故事板(storyboard,前提是创建项目时使用了“useStoryboard”选项)。选中UIView(不是 UIViewController)并将它的类修改为 Player。你可以在 Identity面板的 customeclass字段输入,也可以从它的下拉列表中选择。

打开 Assistant Editor,为 UIView子类 Player创建一个 IBOutlet,从 view用右键拖到右边的头文件中即可。如下图所示。

创建IBActions和 IBOutlets连接

创建一个委托到 klViewController。在 Player上右键,从 IBOutlet拖一个连接线到 klViewController(dock上的黄色方块),如下图所示。

添加委托连接 klViewController

在故事版中,加一个 Toolbar。在 Toolbar是加入两个按钮,分别将标签文本设置为 Play和 Pause。然后加一个 Switch,用于切换AirPlay开关状态。为这 3个控件创建相应的 IBAction(可以用 Assistant Editor)。剩下的事情在 klViewController类中进行。

打开 klViewController.h文件,加入@class Player和@class AVPlayer语句并导入 AVFoundation框架和 Player.h。源代码见下:

#import<UIKit/UIKit.h>

#import<AVFoundation/AVFoundation.h>

#import"Player.h"

@class Player;

@class AVPlayer;

@interface klViewController: UIViewController

声明一个 AVPlayer属性,用于加载到 Palyer视图中。

声明一个 NSURL属性。然后是 Switch控件的 IBOutlet(用 Assistant Editor创建)。

kvLiewController.h文件代码如下:

#import<UIKit/UIKit.h>

#import<AVFoundation/AVFoundation.h>

#import Player.h

@class Player;

@class AVPlayer;

@interface klViewController: UIViewController

@property(nonatomic, strong) AVPlayer* myPlayer;

@property(nonatomic, strong) NSURL* avContentUrl;

@property(strong, nonatomic) IBOutlet Player*airPlayView;

@property(nonatomic, retain) IBOutlet UISwitch* AirPlaySwitch;

-(IBAction)PlayVideo:(id)sender;

-(IBAction)PauseVideo:(id)sender;

-(IBAction)isAirPlayOn:(id)sender;

@end

接下来是类的实现文件。在 viewDidLoad方法中,用一个视频文件的 URL地址初始化 avContentUrl:

avContentUrl= [[NSURL alloc] initWithString

然后用 avContentUrl初始化一个 AVPlayer,用于给头文件中定义的 myPlayer属性赋值。将 myPlayer赋给 airPlayView的 player属性,airPlayerView是一个 Player对象。如下列代码所示:

self.myPlayer= [AVPlayer playerWithURL:avContentUrl];

[airPlayView setPlayer:[self myPlayer]];

现在,要实现两个按钮的视频播放和暂停功能,以及 Switch控件的 AirPlay开关功能。播放按钮的 action方法代码如下所示:

-(IBAction)PlayVideo:(id)sender{

[self.myPlayer play];

}

暂停按钮的 action方法代码如下所示:

-(IBAction)PauseVideo:(id)sender{

[self.myPlayer pause];

}

Switch控件的 action方法代码如下所示:

-(IBAction)isAirPlayOn:(id)sender{

AirPlaySwitch=(UISwitch*) sender;

if(AirPlaySwitch.on){

[airPlayView setAirPlay:NO];

}else

{

[airPlayView setAirPlay:YES];

}

}

结尾

另一个与 AirPlay有关的属性是 usesAirPlayVideoWhileAirPlayScreenIsActive,它用于自动在在播放期间将 AVPlayer切换到 AirPlay,当然仅仅是在 AirPlay已开启的情况下。默认是 false的。

要运行本示例程序,需要在 iPad上进行,并将 iPad连接至 Apple TV同一 wifi网络,然后视频资源的 URL必须是有效的。在模拟器中AirPlay是无效的。

klViewController.h文件

#import<UIKit/UIKit.h>

#import<AVFoundation/AVFoundation.h>

#import"Player.h"

@class Player;

@class AVPlayer;

@interface klViewController: UIViewController

@property(nonatomic, strong) AVPlayer* myPlayer;

@property(nonatomic, strong) NSURL* avContentUrl;

@property(strong, nonatomic) IBOutlet Player*airPlayView;

@property(nonatomic, retain) IBOutlet UISwitch* AirPlaySwitch;

-(IBAction)PlayVideo:(id)sender;

-(IBAction)PauseVideo:(id)sender;

-(IBAction)isAirPlayOn:(id)sender;

@end

klViewController.m文件

#import"klViewController.h"

@implementation klViewController

@synthesize airPlayView;

@synthesize avContentUrl, myPlayer, AirPlaySwitch;

-(void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.

}

#pragma mark- View lifecycle

-(void)viewDidLoad

{

[super viewDidLoad];

//This is an Apple sample video

avContentUrl= [[NSURL alloc] initWithString:@" self.myPlayer= [AVPlayer playerWithURL:avContentUrl];

[airPlayView setPlayer:[self myPlayer]];

[self.myPlayer play];

}

-(void)viewDidUnload

{

[self setAirPlayView:nil];

[super viewDidUnload];

// Release any retained subviews of the main view.

// e.g. self.myOutlet= nil;

}

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

}

-(void)viewDidAppear:(BOOL)animated

{

[super viewDidAppear:animated];

}

-(void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

}

-(void)viewDidDisappear:(BOOL)animated

{

[super viewDidDisappear:animated];

}

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

// Return YES for supported orientations

return(interfaceOrientation!= UIInterfaceOrientationPortraitUpsideDown);

}

-(IBAction)PlayVideo:(id)sender{

[self.myPlayer play];

}

-(IBAction)PauseVideo:(id)sender{

[self.myPlayer pause];

}

-(IBAction)isAirPlayOn:(id)sender{

AirPlaySwitch=(UISwitch*) sender;

if(AirPlaySwitch.on){

[airPlayView setAirPlay:NO];

}else

{

[airPlayView setAirPlay:YES];

}

}

@end

二、podfile 文件写法

platform:ios,'7.0'//指定所支持系统和最低版本

inhibit_all_warnings!//屏蔽所有warning

def pods//定义依赖宏

pod'AFNetworking','~> 2.2'

pod'NYXImagesKit','~> 2.3'

pod'FXKeychain','~> 1.5'

pod'BlocksKit','~> 2.2.0'

pod'NSString-Hashes','~> 1.2.1'

pod'FrameAccessor','~> 1.3.2'

pod'MWFeedParser','~> 1.0.1'

pod'RegexKitLite','~> 4.0'

pod'MBProgressHUD','~> 0.8'

end

//指定"安装完成,但是生成的工程还没有写入磁盘"时要执行的操作

post_install do|installer_representation|

installer_representation.pods_project.targets.each do|target|

target.build_configurations.each do|config|

config.build_settings['ARCHS']='armv7 arm64'

end

end

end

target"v2ex-dev" do

pods //使用宏

end

target"v2ex" do

pods//使用宏

end

Architectures:这是指你想支持的指令集,比如:armv7,armv7s,或者可以用$(ARCHS_STANDARD_32_BIT)这样的参数

Valid Architectures:这是指你即将编译的指令集

Build Active Architecture Only:是否只编译当前设备适用的指令集(如果这个参数设为YES,那么如果你用iPhone 6调试,最终生成的一个支持arm64指令集的Binary;如果你用iPhone4编译,最终生成一个支持armv7指令集的Binary,所以一般在DEBUG模式下设为YES,RELEASE设为NO)

这里,我们编译最终支持的指令集是Architectures和Valid Architectures两个参数的交集。

另外,列一下目前常见iOS设备的指令集:

ARMv8/ARM64: iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)ARMv7s: iPhone 5, iPhone 5c, iPad 4 ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini  ARMv6: iPhone, iPhone 3G, iPod 1G/2G

参考

1.  CocoaPods中Podfile详解

2. CocoaPods使用注意事项

3. Podfile语法参考(译)

4. CocoaPods为多个target添加依赖库

三、iphone怎么将开发的app发布到app store上

iphone怎么将开发的app发布到app store上

发布步骤

登陆苹果开发者中心:developer.apple.(99美元账号)

进入itunes connect

选择Manage Your Apps

选择Add New App

填写项目相关信息,不知道怎么填的点击问号查看,Bundle ID Suffix需要与上一篇申请发布证书中锁填的后缀一致,否则在上传项目时会出错,需要重新打包

然后是选择项目价格和日期

接下来的页面要填写项目的完整信息

URL可以填写自己的主页,公司的主页等,会被展示在itunes中的,这个URL千万不可填写微博主页等需要登陆后才能查看的链接,有网友因为填写微博链接被拒,实在不行,填写博客地址也可的

④联系人信息可以填写自己,也可以填写公司的,demo Aount如果App中需要登陆,可以提供一个测试账号方便苹果审核时调试

⑤上传的图片都是在ituns中展示所用的。3.5-Inch的图片尺寸是960*640或者640*960,或960*600,或

620*900,这几种尺寸都可以。4-Inch的图片尺寸是1136×640, 1136×600, 640×1136或者

640×1096,截图最好是真机调试时按住电源键和home键截,这样尺寸肯定不会错的。

点击继续之后会出现,项目是等待上传状态,可以选择edit编辑项目的相关信息

接下来打包应用程序(前提,已经申请过发布证书并安装,未申请的请参照本文开头的链接进行操作)

a.打开Xcode,选择Product->Archive

b.然后选择distribute…

c.选择第二个

d.选择发布证书

点击next之后便会生成.ipa文件

3.上传.ipa文件,,需要用mac自带的Application Loader

a.在finder中选择应用程序(Applications)->右键选择Xcode->显示包内容->contents->Applications->Application Loader

b.打开Application Loader会出现登录界面,同样用登录开发者中心的账号登录,第一次登录会出现一个接受协议页面,打√后继续就行了

c.进入后选择Deliver Your App,会出现你在developer中心填写的项目,是等待上传状态,选择上传ipa就可以了。

4.上传成功后再回到开发者中心,刷新页面就会发现项目是等待审核状态了,正常审核周期是5个工作日

此时邮箱会收到苹果的邮件,审核结果出来后也会收到邮件

开发的app怎么到app store

开发完成的iOS APP,发布到APP Store是不需要另外付费的,但作为开发者需要缴纳99美元一年的开发者账号费用。缴费成功后,就已经成为苹果iOS开发者项目成员之一。这是申请成为开发者成员的链接:

要提交应用,首先必须有IDP(苹果开发者证书);其次必须有一台Mac OS系统的电脑;最后必须提供自己测试好的应用和截图,介绍等信息。

注意提交的应用不能存在以下情况,否则是会审核失败的:应用不能崩溃;不能使用私有API;不能复制原生app的功能;应该使用IAP(应用内付费)金融交易;不能在用户不知情的情况下使用相机或者麦克风;不能擅自使用没版权的图片,避免这些情况,审核通过率将大大提高。

iphone app store怎么发布APP呢?

建议找app开发公司来帮忙发布吧,app上线的程序有点难,现在业内做的不错的话就就是互联在线了,他们对iphone的app审核程序比较了解,对各种app的上线问题都比较有经验。

如何发布iphone的app到app store

以六点一刻为例。即便是免费应用也需要一个开发者账号,注册Developer账户这里就不详细介绍了。然后自然是将App准备好。确保iOS应用程序已经在模拟器(Simulator)中做了全面的测试确认没有已知Bug了。App发布的工作一切准备好了之后,就可以发布应用到App Store了,应用发布概括起来需要以下几个流程:1.注册App ID,在Xcode中指定Bundle Identifier2.创建发布证书(Distribution Certificate)3.创建Distribution Provisioning Profile4.用Distribution Profile为应用签名5.打包App6.在iTunes Connect上传App以上大部分的操作是在Provisioning Portal、XCode、Keychain Aess工具和iTunes Connect中完成的。上传App必须在Xcode软件里执行(也就是要有MacAir, MacMini等运行Moc OS X Mountain等10.x的系统,最好是10.7等最新版的。XCode这个Object C的集成开发环境目前版本是4.3.2。其他操作都可以在普通浏览器里完成。发布iOS应用程序到App Store-创建App ID首先给iOS应用程序申请一个App ID,它是你的应用程序的唯一标识。登录iOS Developer网站,点击右侧的iOS Provisioning Portal链接,选择App ID。选择创建新app ID。在Description中输入应用的描述信息。Bundle Identifier是指应用的代码标识,你可以用公司名.应用名来标识,例如:.pany.demoapp。然后打开X-Code,选择Target> Summary。在Identifier输入框中输入上面注册的Bundle Identifier。发布iOS应用程序到App Store-创建Distribution CertificateiOS应用都有一个安全证书用于验证开发者身份和签名。在Provisioning Portal的Distribution栏目下有详细介绍,但总体可以归纳为以下步骤。1.打开Keychain Aess,在Preferences中关闭OCSP和CRL。2.点击Keychain Aess菜单,选择Certificate Assistant> Request Certificate from Authority。3.输入Email地址,选择Saved to Disk和Let me specify key pair information。点击Continue继续。4.选择key size of 2048 bits和RSA algorithm,点击Continue继续。5.然后会在桌面上生成一个.CSR的文件。6.然后进入Provisioning Portal,选择Certificates-> Distribution-> Add Certificate,添加刚才创建的.CSR签名文件。7.在等待审核的时候下载并安装WWDR intermediate certificate。8.刷新页面,然后就可以下载证书了。下载后安装。9.最后一步,打开Keychain Aess。选中刚才安装的private key,选择菜单中的Export Item将私钥导出。将导出的私钥备份到一个安全的地方,以便以后重装了系统可以还原。发布iOS应用程序到App Store-创建Distribution Provisioning Profile打开Provisioning Portal,选择Provisioning-> Distribution,选择添加一个新的profile。Distribution Method要选择App Store,App ID需要输入在前面申请的App ID。提交后需要等一会儿再刷新这个页面。然后就可以下载和安装profile了。安装后profile会被添加到XCode。发布iOS应用程序到App Store-检查签名和生成设置打开XCode,在Build Settings中选择Code Signing。在Release设置上选择刚才申请的Distribution Profile。

ios8开发的app现在发布行吗

一般新软件都兼容最新的两个大版本系统,iOS9发布这么长时间了,放弃iOS8以前的也未尝不可。

用ionic开发的app发布到appstore审核会被拒绝吗

AppStore审核被拒,原因如下: 1、程序有重大bug,程序不能启动,或者中途退出。 2、绕过苹果的付费渠道。 3、游戏里有实物奖励的话,一定要说清楚,奖励由本公司负责,和苹果没有关系。 4、用到苹果的标志。(应用的设计和Apple的Logo风格太像了...

ios开发问 Xcode IPA发布APP Store

1.虚拟机可以提交应用的,没问题。

2.不限制数量。因为发布的时候用的是发布证书,调试的时候用的证书只适用于交过费的账号里面绑定的开发设备,限99台。iPhone只能装iPhone应用,iPad可以装iPhone和iPad应用。

3.同步助手安装正版是利用了企业账号,企业账号允许在网页安装,可以绕过app store,企业账号没有开发设备数量限制。把app提交给91就可以了。

ios怎么发布到app store

方法/步骤

1

打开苹果开发者中心

打开后点击:Member Center

2

如果你的电脑没有保存密码,则会提示你输入开发者帐号和密码,因为我的电脑已经保存了,所以直接进入

3

2.点击:Certificates, Identifiers& Profiles

4

一.创建App IDs和Boudle ID

4.点击App IDs,会进入如下界面,点击右上角的+号

5

5.填写App IDs和Boudle ID

6

6.点击continue

7

7.点击Submit

8

8.点击Done

9

二.创建发布证书(若已创建过发布证书,现在用的是p12文件,可直接跳到第21步)

9.点击Production后,点击+号

10

10.点击App Store and Ad Hoc

11

11.点击Continue

12

12.点击Continue

13

创建本地证书

13.此时返回到桌面,在点开LaunchPad,在其他中找到钥匙串访问,切记不要关闭浏览器

14

14.打开钥匙串访问,点击电脑左上角的钥匙串访问–证书助理–从证书颁发机构请求证书

15

15.会出现如下界面,选择存储到磁盘,点击继续

16

16.选择存储到桌面,存储

17

17.点击完成

18

18.你会在桌面上看到下面的文件

19

19.然后回到浏览器,点击choose File..选择创建好的:CertificateSigningRequest.certSigningRequest文件,点击Generate

20

下载创建好的发布证书cer后缀的文件然后点击done你创建的发布证书就会存储在帐号中"

20.点击Download下载创建好的发布证书(cer后缀的文件),然后点击Done,你创建的发布证书就会存储在帐号中。

21

注:一般一个开发者帐号创建一个发布证书就够了,如果以后需要在其他电脑上上架App,只需要在钥匙串访问中创建p12文件,把p12文件安装到其他电脑上。这相当于给予了其他电脑发布App的权限。

22

创建PP文件

21.找到Provisioning Profiles,点击All,然后点击右上角+号

23

22.选择App Store,点击Continue

24

23.在App ID这个选项栏里面找到你刚刚创建的:App IDs(Bundle ID)类型的套装,点击Continue

25

24.选择你刚创建的发布证书(或者生成p12文件的那个发布证书),点击Continue

26

25.在Profile Name栏里输入一个名字(这个是PP文件的名字,可随便输入,在这里我用工程名字,便于分别),然后点击Generate

27

26.Download生成的PP文件,然后点击Done

28

在App Store开辟空间

27.回到Member Center,点击iTunes Connect

29

28.点击我的App

29.点击新建 iOSApp

30.依次按提示填入对应信息,然后点击创建

31.依次把不同尺寸的App截图拉入到对应的里面

32.填入App简介

33.按提示依次输入

34.此时这个构建版本还没有生成,我们先把基本信息填写完毕,然后再进入Xcode中把项目打包发送到过来。

注意:填写完一定要点击右上角的保存。

在Xcode中打包工程

找到你刚刚下载的发布证书(后缀为.cer)或者p12文件,和PP文件,双击,看起来没反应,但是他们已经加入到你的钥匙串中。

35.在Xcode中选择模拟器为iOS Device,按照下图提示操作

36.修改.plist文件,两个.plist文件都要修改

37.然后发送到我的App