我有一个使用iPod Library API访问iOS中歌曲数据库的应用程序.随着iTunes Match的发布,任何不在设备上的歌曲都将无法加载.有没有办法要求下载这首歌?也许使用新的iCloud API?
编辑: 要明确我不会问如何使用iPhone下载iTunes Match歌曲.iOS SDK允许通过MPMediaQuery/MPMediaItems访问iPod库.在具有iTunes Match功能的iOS设备上,通过MPMediaQuery返回iTunes匹配库中但不在设备本地的歌曲,但MPMediaItems的'exportable'标志设置为false.当我在音乐应用程序中访问这些歌曲时,它们会自动下载.我想通过MPMediaItem触发相同的自动下载.
我已经看到iTunes Match中的项目被视为iCloud的一部分,并且iOS 5 SDK中有一个新的iCloud部分.但据我了解,我只能上传我的应用程序数据.我希望通过MPMediaItem或通过iCloud使用URL来触发iTunes Match下载.
我的iPhone应用程序已准备好投入生产,我们希望尽可能多地填充数据.当我在为我的应用程序生成.app文件时,我看到一个名为<executable name>的文件,我假设它是已编译的代码.这大约是2.5兆美元,对于我在我的应用程序中包含的内容而言似乎很大.我应该检查什么类型的东西,以确保我的可执行文件中没有包含任何不需要的项目?
我在我的应用程序中已经看到这个问题了一段时间.它通过随机硬锁或重启HTC手机在使用OpenGL进行渲染时显示出来.检查logcat它似乎是一个死锁问题,因为你会看到这个打印...
waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够找到的最佳信息来源是:http: //groups.google.com/group/android-developers/browse_thread/thread/d5b7e87f4b42fa8f/d6214ed7a02efc98?q = free&lnk = ol&
他们建议在glSurface的OnDraw函数末尾添加glFinish.我使用这个解决方案没有很好的结果(它仍然崩溃,但不常见).还有其他人听说过这个问题吗?遇到任何更好的解决方案?
我在我的应用程序中有InApp购买设置.我虽然有一些奇怪的行为.每次我启动应用程序时,我都会打电话
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
Run Code Online (Sandbox Code Playgroud)
设置初始观察者.然而,这立即触发
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
Run Code Online (Sandbox Code Playgroud)
每个交易的完整数组.我试着打电话
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
Run Code Online (Sandbox Code Playgroud)
在每个事务上再次重新启动应用程序,但是当我调用addTransactionObserver时,paymentQueue仍然会触发.我现在的主要目标是刷新事务队列并开始清理.我不知道我是如何进入这种状态的,也不知道如何摆脱它.
我的应用已启动并正在运行,现在我正在寻求提高渲染性能.使用'仪器'我收集了一些数据.我正在使用旧的iPhone 3G作为最糟糕的情况.
时间分析器:
-30% CopyVertexElementsMultipleSequential
-11% mach_msg_trap
-4% _semwait_signal
-2% ValidateState
Run Code Online (Sandbox Code Playgroud)
但是,使用Open GL ES驱动程序,采样器读取:
-70% _semwait_signal
-24% CopyVertexElementsMultipleSequential
-0.7% mach_msg_trap
Run Code Online (Sandbox Code Playgroud)
浏览文档我无法得出OpenGL ES Sampler和Timer Profiler之间的区别.任何人都可以开导我吗?
我试图在主线程上执行此操作:
[curItem.mButton setBackgroundImage:newArt forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
所以我这样做......
cWrapperObject* obj = [cWrapperObject alloc];
[obj setupParams :curItem.mButton :newArt];
[obj performSelectorOnMainThread:@selector(setImageForButton) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)
我觉得这很糟糕,有没有人对我如何处理这种方式有任何建议?
我有一个处理线程,我用它来填充数据缓冲区.在其他地方,一块硬件触发从该数据缓冲区读取的回调.然后处理线程启动并重新填充缓冲区.
当缓冲区填满时,我正在告诉线程等待:
while( [self FreeWriteSpace] < mProcessBufferSize && InActive) {
[NSThread sleepForTimeInterval:.0001];
}
Run Code Online (Sandbox Code Playgroud)
但是当我描述我在睡眠中花费了大量的CPU时间.还有更好的等待方式吗?我是否甚至关心配置文件是否说时间花在睡眠中?
我正在通过AVAssets加载音频资产.我想弄清楚资产中有多少通道(基本上是单声道或立体声).做这个的最好方式是什么?
有没有办法检查手机是否锁定?或者我是否收到手机将被锁定的通知?
我的应用程序在后台运行,继续播放音频,所以applicationWillResignActive:不是我真正想要的.
使用a MPMusicPlayerController是否有办法查询曲目长度?
使用.currentPlaybackTime我可以弄清楚我进入赛道的距离,但我无法知道赛道有多长.
我[MPMediaItem valueForProperty:MPMediaItemPropertyAssetURL]为某些曲目返回null,因此使用AVAsset对我不起作用.
iphone ×7
ios ×6
objective-c ×4
core-audio ×2
opengl-es ×2
android ×1
asynchronous ×1
audio ×1
code-size ×1
htc-android ×1
icloud ×1
instruments ×1
ios4 ×1
ipod ×1
mpmediaitem ×1
nsthread ×1
optimization ×1
xcode ×1