問題タブ [phphotolibrary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - PHPhotoLibrary で、photoLibraryDidChange がすべての更新を通知しない
PHPhotoLibrary
iPhone でアプリケーションのアルバムの画像を保存して取得するために使用しています。
アルバムに大量の画像 (約 5,000 枚の静止画像) がある場合、アプリケーションはネットワークから 10 枚の画像をダウンロードし、カメラ ロールに保存してアプリケーションのアルバムに追加します。
同時に、アプリケーションphotoLibraryDidChange
は追加された画像を知るためにコールバックを監視しますが、挿入された画像を 5 つしか通知しません。
HOMEボタンを押してアプリを終了し、フォトアプリでカメラロールとマイアルバムを確認。正しくは 5010 枚の画像があります。
多分photoLibraryDidChagne
すべての変更を通知しませんか?
私のコードは以下のようなものです。
挿入されたアセットを NSLog と Debugger で確認したところ、本当に 5 つの画像が更新されました。
他の5枚の画像については通知はありません。
swift - ファイルを一時 URL からドキュメント ディレクトリにコピーすると、常にスローされます。NSURLSessionDownloadTask
うまく機能している NSURLSessionDownloadTask を使用してファイルをダウンロードしています。画像またはビデオ ファイルを一時ディレクトリに取得するとき。しかし、写真ライブラリに入れるには、それを恒久的な URL に移動する必要があります。私は何NSFileManager
のcopyItemAtURL:
成功もなく を使用しています。それが投げる理由は何ですか?ファイルの種類がドキュメント ディレクトリと互換性がない可能性がありますか?
ここに印刷ステートメントがあります。セキュリティのために、ドキュメント ディレクトリのアプリ バンドル ID を$(AppId)
Optional("/private/var/mobile/Containers/Data/Application/E8D9C365-15D2-40BD-B0B5-A000BEDA9F00/Library/Caches/com.apple.nsurlsessiond/Downloads/$(AppID)/CFNetworkDownload_CK3G3Z.tmp からアイテムをコピー中にエラーが発生しました") を Optional("/var/mobile/Containers/Data/Application/E8D9C365-15D2-40BD-B0B5-A000BEDA9F00/Documents/shortMovie.mov") に
ios - PHPhotoLibrary API で大量のファイルを保存する際の例外
私のアプリケーションには、多くの写真とビデオ ファイルを tmp フォルダーにダウンロードし、PHPhotoLibrary API を使用してカメラ ロールに保存する機能があります。
問題は、保存プロセスで時々 (確率は約 10%) 例外が発生することです。
コンソールのエラーメッセージは、
キャッチされていない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。
私のコードは以下のようなものです:
同様のケースを確認しました:
フォト フレームワークを使用してフォト ライブラリに画像を保存する
ケースは毎回クラッシュしますが、私のコードはめったにクラッシュしません。
そして、私が呼んでいる場合とは異なり
'performChanges'
ブロックで
また、NSLogでtmpフォルダ内の動画ファイルのfileURLを確認したところ、ブロック外でも'performChanges'
ブロック内でもOKです。
fileURL=file:///private/var/mobile/Containers/Data/Application/C87F0F75-E128-4E9F-AE07-6B914939AC5D/tmp/video3.mp4
この問題の原因または解決策をお知らせいただければ幸いです。
ios - iOS: PHPhotoLibrary を使用して画像を保存しようとするとアプリがクラッシュする
PHPhotoLibrary を使用して写真を保存しようとしています。その写真を一時ファイルとしてアプリのドキュメント フォルダーに保存しました。
以下は私の店の写真コードで、NSOperationQueue を使用してバックグラウンドで実行されています
photoDic
"path" を文字列、"size" を文字列、"albumName" を配列として含む辞書です。
写真の保存プロセスを開始する前に、すべての顧客アルバムを作成しました。
また、完了ハンドラーのデリゲート関数は、アプリ ドキュメント フォルダー内の一時ファイルを削除するためだけのものです。
しかし、以下のクラッシュレポートを入手しました。
オンラインでクラッシュしました:
assetChangeRequest プレースホルダーが nil を返すようです。この nil を配列に追加しています。
この問題を再現しようとしていますが、photoDic に nil が含まれていると、作成している URL が正しくなくなり、この関数は失敗ハンドラーをエラーと共に返します。
fileURL が正しくなく、ファイルが見つからない場合、この関数はアプリをクラッシュさせる代わりに操作を終了できないというエラーを含む失敗ハンドラーを返します。
フォルダー情報の取得に何か問題があった場合、空のケースを処理する for ループと if 句があるため、クラッシュした行が呼び出されることはありません。
その行でクラッシュすることはありません。
placeholderForCreatedAsset
ゼロになるケースはありますか?または、私がカバーしていない他のケースがこの問題を引き起こし、このクラッシュレポートを生成する可能性がありますか?
ios - IOS の設定の変更を処理する正しい方法
ユーザーが最初にフォト アルバムへのアクセスを許可しなかった場合は、[キャンセル] と [設定] から選択できるポップアップが表示されます。設定を選択すると、アプリのカメラとフォト ライブラリを有効にできる設定ページが表示されます。ただし、ユーザーが設定でカメラまたは写真ライブラリのスイッチを切り替えるとすぐに、アプリがクラッシュし、「デバッガーからのメッセージ: シグナル 9 により終了しました」という出力が表示されます。以下は私のポップアップのコードです
ユーザーがスイッチを切り替えた後にアプリに戻って写真の選択を開始できるように、これを処理する正しい方法は何でしょうか?
ios - 混合コードの Objective-C/C++ ファイル (.mm ファイル) で PHPhotoLibrary を使用するには?
iOS プロジェクトで PHPhotoLibrary クラスを使用しようとしていますが、混合コードの Objective-C/C++ ファイルの 1 つでそれが必要です。どうやら必要なインポートが正しくないというビルドエラーが発生しています。Apple docs hereは、 @import Photos が使用されることを明確に示しているため、ビルド設定で「モジュールを有効にする (C および Objective-C)」をオンにし、他のインポートで @import Photos を追加しました。ただし、@import Photos を使用することに対する Xcode の異議は修正されませんでした。問題は、この SO の質問の投稿の 1つがここで説明しているように、.mm ファイルに含める @import Photos スタイルのみを使用できることです。
(私は Swift を使用しておらず、Objective-C のみを使用しており、いくつかのファイルでは Objective-C と C++ が混在しています)
PHPhotoLibrary コードがビルドされるように、.mm ファイルに適切にインポート/インクルードするにはどうすればよいですか?