tencent cloud

Cloud Object Storage

最新情報とお知らせ
製品アップデート情報
製品のお知らせ
製品概要
製品概要
機能概要
応用シナリオ
製品の優位性
基本概念
リージョンとアクセスドメイン名
仕様と制限
製品の課金
課金概要
課金方式
課金項目
無料利用枠
記帳例
請求書の確認とダウンロード
お支払い遅れについて
よくある質問
クイックスタート
コンソールクイックスタート
COSBrowserクイックスタート
ユーザーガイド
リクエストの作成
バケット
オブジェクト
データ管理
バッチ処理
グローバルアクセラレーション
監視とアラーム
運用管理センター
データ処理
インテリジェントツールボックス使用ガイド
データワークフロー
アプリ統合
ツールガイド
ツール概要
環境のインストールと設定
COSBrowserツール
COSCLIツール
COSCMDツール
COS Migrationツール
FTP Serverツール
Hadoopツール
COSDistCpツール
HDFS TO COSツール
オンラインツール (Onrain Tsūru)
セルフ診断ツール
実践チュートリアル
概要
アクセス制御と権限管理
パフォーマンスの最適化
AWS S3 SDKを使用したCOSアクセス
データディザスタリカバリバックアップ
ドメイン名管理の実践
画像処理の実践
COSオーディオビデオプレーヤーの実践
データセキュリティ
データ検証
COSコスト最適化ソリューション
サードパーティアプリケーションでのCOSの使用
移行ガイド
サードパーティクラウドストレージのデータをCOSへ移行
データレークストレージ
クラウドネイティブデータレイク
メタデータアクセラレーション
データアクセラレーター GooseFS
データ処理
データ処理概要
画像処理
メディア処理
コンテンツ審査
ファイル処理
ドキュメントプレビュー
トラブルシューティング
RequestId取得の操作ガイド
パブリックネットワーク経由でのCOSへのファイルアップロード速度の遅さ
COSへのアクセス時に403エラーコードが返される
リソースアクセス異常
POST Objectの一般的な異常
セキュリティとコンプライアンス
データ災害復帰
データセキュリティ
クラウドアクセスマネジメント
よくある質問
よくあるご質問
一般的な問題
従量課金に関するご質問
ドメインコンプライアンスに関するご質問
バケット設定に関する質問
ドメイン名とCDNに関するご質問
ファイル操作に関するご質問
権限管理に関するご質問
データ処理に関するご質問
データセキュリティに関するご質問
署名付きURLに関するご質問
SDKクラスに関するご質問
ツール類に関するご質問
APIクラスに関するご質問
Agreements
Service Level Agreement
プライバシーポリシー
データ処理とセキュリティ契約
連絡先
用語集
ドキュメントCloud Object Storage

iOS SDK

フォーカスモード
フォントサイズ
最終更新日: 2024-06-30 12:32:52

SDKを手動で統合後、QCloudCOSXMLEndPointインスタンスのregionNameを設定すると、エラー「[__NSCFConstantString matchesRegularExpression:]: unrecognized selector sent to instance xxx」がスローされましたが、どのように対処すればよいですか。

原因:matchesRegularExpressionはNSStringのカテゴリーが提供するメソッドです。Objective-Cリンカーはメソッドごとにシンボルテーブルを生成することはなく、クラスについてのみシンボルテーブルを生成します。SDKは静的ライブラリであり、静的ライブラリ内ですでに存在するクラスのカテゴリーが定義されている場合は、システムがそのクラスはすでに存在すると判断し、クラスとクラスのカテゴリーのコードを統合しないため、最終的に実行可能なコードの中にカテゴリー内のメソッドがない状態になります。
対処方法
1. target>Build Settings>All>Other Linker Flagsに-Objcおよび-all_loadの2つのパラメータを追加します。
2. -ObjCは静的ライブラリのクラスとカテゴリーをすべて最終的に実行可能なファイルの中にロードしますが、ライブラリ内にカテゴリーだけがあり、クラスがない場合、そのパラメータは失効するため、-all_loadが必要です。このパラメータは見つかったすべてのターゲットファイルを実行可能なファイルに加えます。
3. 上記の方法でもこのエラーが解決しない場合は、bitcodeの無効化をお試しください。

SDKを統合してリクエストを送信すると、「デフォルトのOCRサービス設定が設定されていません。設定してからこのメソッドを呼び出してください。または、Keyが'xxx'のOCRサービス設定として設定されていません。設定してからこのメソッドを呼び出してください」というエラーがスローされましたが、どのように対処すればよいですか。

原因:SDKのすべてのリクエストは1つのQCloudCOSXMLServeiceおよびQCloudCOSTransferMangerServiceに依存しています(アップロードの高度なインターフェースはそのインスタンスに依存)。リクエスト送信前に対応するserviceを登録していない場合に、このエラーがスローされます。
対処方法:次のコードによって、リクエストに必要なserviceインスタンスを登録し、このインスタンスがリクエスト送信前に確実に存在するようにします。
QCloudServiceConfiguration *configuration = [QCloudServiceConfiguration new];
configuration.appID = "AppId";
configuration.signatureProvider = self;
QCloudCOSXMLEndPoint *endpoint = [[QCloudCOSXMLEndPoint alloc] init];
endpoint.regionName = @"region";
endpoint.useHTTPS = YES;
configuration.endpoint = endpoint;

[QCloudCOSXMLService registerDefaultCOSXMLWithConfiguration:configuration];
[QCloudCOSTransferMangerService registerDefaultCOSTransferMangerWithConfiguration:configuration];

SDKの統合後に、「デフォルトのCOSXMLServiceがすでに存在します。新たな設定がある場合は、registerCOSXMLWithConfiguration:withKey:によって再登録してください」というエラーがスローされましたが、どのように対処すればよいですか。

原因:SDKでは、COSXMLServiceインスタンスごとに対応する設定が異なります(設定情報については関連の属性を参照可能)。例えば、regionNameがap-guangzhouとap-beijingという2つの異なる設定の場合、2つの異なるserviceを登録する必要があります。ap-guangzhouを使用してあるserviceに登録した後、そのregionをap-guangzhouに変更して再登録を行った場合、このエラーがトリガーされます。
対処方法
1. デフォルトのserviceはregisterDefaultCOSXMLWithConfiguration:によって行われます。keyを指定する必要はありません。
2. 次のコードによって新たなserviceを登録します。
//登録が必要なkeyが存在するかどうかを判断します
if(![QCloudCOSXMLService hasServiceForKey:@"登録が必要なkey"]){
//存在しなければ新たなserviceを登録します
[QCloudCOSXMLService registerCOSXMLWithConfiguration:configuration withKey:@"登録が必要なkey"]
}

SDKの統合後の実行で、プロキシ「- (void)signatureWithFields:(QCloudSignatureFields *)fileds request:urlRequest:compelete:」が呼び出せませんが、どのように対処すればよいですか。

原因:このプロキシメソッドはキー/署名を取得するメソッドであり、キーの有効性を最大限に保証するため(署名の呼び出しが早すぎると期限切れになりやすい)、SDKはリクエスト送信前、すなわちtask resumeの前でなければ呼び出しを行いません。
対処方法
1. このプロキシメソッドが存在するクラスがリクエスト送信前に破棄されないようご確認ください。このプロキシメソッドを1つのシングルトンクラス内に実装することをお勧めします。
2. QCloudServiceConfigurationインスタンスを作成した後、そのsignatureProvider、例えばconfiguration.signatureProvider = self(selfは実装するプロキシメソッドが存在するクラス)などを設定したかどうか。
3. 上記のどちらにも問題がない場合は、リクエストが送信されているかどうかをチェックしてください。

SDKはキャッシュとキーを再利用できますか。キーが期限切れとなった後、新たなキーを再度リクエストするにはどうすればよいですか。

SDKはQCloudCredentailFenceQueueを提供してキーのキャッシュと再利用を実現します。具体的な使用方法については、クイックスタートのドキュメントをご参照ください。

SDKの高度なインターフェース「QCloudCOSXMLUploadObjectRequest」から、エラー「このタイプのbodyの設定はサポートしていません。サポートしているタイプはNSData、QCloudFileOffsetBody、NSURLです」というエラーがスローされましたが、どのように対処すればよいですか。

SDKは現時点で次の3タイプのbodyの設定のみをサポートしています。
1. NSURL:ファイルのローカルパスであり、[NSURL fileURLWithPath:@"ファイルのローカルにおけるパス"]によってURLを初期化します。
2. NSData:バイナリーデータ。
3. QCloudFileOffsetBody:パートのbodyであり、開発者は通常、このタイプに関心を払う必要はありません。SDKの高度なインターフェース内で使用するbodyタイプです。

SDKの高度なインターフェース「QCloudCOSXMLUploadObjectRequest」によってシステムフォトライブラリ内のビデオまたはファイルをアップロードする際に、中断からの再開に失敗し、「The specified Content-Length is zero」というエラーが発生しましたが、どのように対処すればよいですか。

SDKはサンドボックス内のファイルのアップロード続行のみサポートしています。中断からの再開機能を使用する必要がある場合は、先にファイルをサンドボックスに移動してください。

SDKを統合後、アップロードインターフェースを呼び出してアップロードしたファイルのサイズがローカルのファイルと一致しませんが、どのように対処すればよいですか。

bodyを設定した後にローカルファイルに変更が生じていないことをご確認ください。例えばファイルの圧縮中や、書き込みが完了する前にアップロードインターフェースを呼び出してアップロードをトリガーした場合などは、SDKはその時点のファイルサイズを基準としてマルチパートアップロードを行うため、cosにアップロードされたファイルとローカルファイルのサイズが一致しないことが起こります。

SDKを統合後、アップロードインターフェースを呼び出した際に、「入力されたbodyのURLはローカルURLではありません。確認してから使用してください」というエラーが発生しましたが、どのように対処すればよいですか。

対処方法: URLは必ずfile://で始めてください。次の2つの方法で初期化することができます。
1. [NSURL URLWithString:@"file:////var/mobile/Containers/Data/Application/DBPF7490-D5U8-4ABF-A0AF-CC49D6A60AEB/Documents/exampleobject"]
2. [NSURL fileURLWithPath:@"/var/mobile/Containers/Data/Application/DBPF7490-D5U8-4ABF-A0AF-CC49D6A60AEB/Documents/exampleobject"]

SDKを統合後、アップロードインターフェースを呼び出し、アップロードに成功したファイルのサイズが0でした。どのように対処すればよいですか。

対処方法:
1. アップロードパスがファイルのシステムフォトライブラリのパスであった場合は、このファイルの読み取り権限の有無を確認してください。例えば、file:///var/mobile/Media/DCIM/101APPLE/というパスは直接アクセスすることはできず、Photosフレームワーク内のrequestメソッドによって写真を取得する必要があります。
2. AppにiOS11との互換性が必要な場合は、フォトライブラリのビデオをアップロードする際に、[[PHImageManager defaultManager] requestPlayerItemForVideo:asset options:option resultHandler:^(AVPlayerItem *playerItem, NSDictionary *info) { //適時にファイルをサンドボックスに移動またはplayerItemを保存 }];のメソッドを呼び出してplayerItemを取得してから保存するか、またはこのコールバックでアップロードしたいファイルをAppのサンドボックスに移動します。iOS11のplayerItemが破棄されるとファイルの読み取り権限は失効するため、アップロードしたファイルのサイズは0になります。
3. アップロードするファイルがAppのサンドボックス内のファイルの場合、アップロードするファイルが、例えば /var/mobile/Containers/Data/Application/0BFBB3FE-0FD0-46CB-ADDE-DDE08F6D62C3/tmp/などのサンドボックスのtmpフォルダに入っていないかをチェックしてください。このディレクトリ下のファイルはシステムによって随時クリーンアップされるため、アップロードしたいファイルを安全なディレクトリに移動することで、ファイルがアップロード中にクリーンアップされないようにしてください。サンドボックスに関するその他の説明については、File System Basicsをご参照ください。

SDKを統合後、高度なインターフェースを使用してアップロードした際、「アップロード中のMD5検証がローカルと一致しません。ローカルファイルにアップロードの過程で変化が生じていないかを確認してください。マルチパートアップロードの過程では、各パートのアップロードが完了するごとに、そのパートのMD5とローカルパートのMD5が一致するかを検証し、一致しなければエラーとします」と表示されましたが、どのように対処すればよいですか。

原因:このエラーは1MBより大きいファイルをアップロードする場合に発生します。1MBを超えるファイルをSDKでアップロードする際は、ファイルをいくつかの1MBのファイルに分けてマルチパートアップロードを行います。各パートのアップロードが完了した後、バックエンドから返されるetagとローカルファイルのパートを比較し、不一致が発見された場合はこのエラーがスローされます。
対処方法:ファイルがアップロードの過程で変更されていないかチェックしてください。

SDKにCDNアクセラレーションドメイン名を使用してアクセスすることはできますか。

できます。ご使用のプログラミング言語に応じて、対応するSDKドキュメントを参照して操作を行ってください。

SDKでリクエストのタイムアウト時間を設定するにはどうすればよいですか。

対処方法:SDK 5.7.0以降では、リクエストのタイムアウト時間のカスタマイズをサポートしています。次の方法で設定できます。
1. QCloudServiceConfiguration *config = [QCloudServiceConfiguration new]を初期化します。
2. configのtimeoutInterval属性を設定すれば完了です。例えばconfigの.timeoutInterval = 30;などに設定します。

COS iOS SDKにcrashが発生しましたが、どのように対処すればよいですか。

現在のバージョンが最新バージョンかどうかチェックしてください。旧バージョンであれば、最新のSDKのバージョンにアップグレードすることをお勧めします。最新バージョンのiOS SDKについては、qcloud-sdk-iosをご参照ください。

「Undefined symbols for architecture arm64: "_ne10 init dsp", referenced from:」クラスのエラーにはどのように対処すればよいですか。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック