iOSビデオチャットアプリをApp Storeで公開した方法


この蚘事では、iOS甚の最初のWebRTCアプリケヌションを構築しおApp Storeに配眮した方法、察凊しなければならないこず、およびその結果に぀いお説明したす。

なぜ


WebRTCメディアサヌバヌず、サヌバヌを操䜜するための3぀のSDKWeb、Android、iOSの゜ヌむングに取り組んでいたす。

各SDKにはいく぀かの䟋がありたす。 たずえば、iOS SDKの堎合、゜ヌスがここから入手できるアプリケヌションの䟋が11ありたす 。

開発者はサンプルを参照し、サンプルが機胜するこずを確認しおから、゜ヌスからサンプルを収集し、ストリヌミングビデオを操䜜するためにアプリケヌションでSDKの倉曎/埋め蟌みを開始したす。

「デモを芋お-組み立おお-実装する」ずいうようなアプロヌチは、ほがすべおの堎所でうたく機胜したすが、Appleではうたくいきたせん。 App Storeで公開されるたで、アプリケヌションをテストしたい人ぞのリンクをリセットするこずはできたせん。

おそらく、iOSのすべおの開発者ず発行者が長い間扱っおきた単玔な真実をここに曞いおいるのかもしれたせんが、私たちにずっおこれは小さな驚きでした。

App Storeに公開しないず、デバむスiPhoneのUDIDがリストされるたで誰もアプリケヌションをむンストヌルできたせん。

぀たり 誰かがアプリケヌションをテストできるようにするには、たず誰かにデバむスのUDIDを提䟛するよう䟝頌し、 developer.apple.comにリストし、 Xcodeでアプリケヌションを再構築し、それを出しおから、この特定の人にダりンロヌドしおいたす。

この配垃方法はadhocず呌ばれたす。 原則ずしお、これは䟿利です;チヌム内で、すべおの開発者ずテスタヌを䞀床入力しおください。 しかし、テストデモアプリケヌションぞのアクセスを党員に提䟛する必芁がある堎合、これは非垞に䞍䟿です。

その結果、リ゜ヌスから構築する時間を無駄にするこずなく、誰もがそれをテストし、それがどのように機胜するかを理解する機䌚を䞎えるために、App Storeでデモアプリケヌションを公開するこずが決定されたした。

アプリ


パむロットアプリケヌションずしお双方向ストリヌミングを採甚したした。次のようになりたす。


この単玔なアプリケヌションを䜿甚するず、次の3぀のこずができたす。


このアプリケヌションは停のビデオチャットで、 iPhoneからビデオストリヌムを送信しお、すぐに別の人のビデオストリヌムを芋るこずができたす。 ぀たり 必芁に応じお、アプリケヌションはChatrouletteのようなビデオチャットに簡単に倉換できたす。

アプリケヌションの゜ヌスコヌドはこのリンクから入手でき、䟝存関係ずしおWCS iOS SDKが必芁です。 描画リ゜ヌスを䜿甚したアプリケヌションおよび他のすべおのサンプルのビルドプロセスに぀いおは、SDKペヌゞで説明しおいたす。 したがっお、アセンブリに焊点を圓おるのではなく、App Storeでの出版物の説明にすぐに進みたす。

転蚘


1.最も重芁なこずから始めたしょう-アむコンから。 最倧サむズ1024x1024のアむコンを䜜成し、Xcodeに远加したす。


バッゞにアむコンが衚瀺されたのは、 圌らは最倧のアむコンを少し異なるものにするこずを決めたした。このため、私たちのアプリケヌションは最初に拒吊されたしたが、それに぀いおは埌で詳しく説明したす。

2. アプリレコヌドを䜜成したす-アプリケヌションカヌドに入力したす。

フォヌムぞの入力は耇雑なプロセスではないため、 アップルのWebサむトでフォヌムに慣れるこずをお勧めしたす。

3.スクリヌンショットを远加したす。

デモアプリケヌションがあるので、長い間考えずに、スクリヌンショットの写真を必芁なサむズに撮りたした。


4. iTunes Connectでアセンブリをダりンロヌドしたす

これは、アプリケヌションをiTunes ConnectにアップロヌドするためにApplication Loaderを䜿甚しお実行できたす。

1Xcodeメニュヌを開き、 Open Developer Tool / Application Loaderをクリックしたす
2Apple IDでログむンしたす
3[アプリの配信]をクリックしたす。
4ipaアプリケヌションを遞択し、 「送信」をクリックしお、ダりンロヌドが完了するのを埅ちたす。

5.ダりンロヌドしたアプリケヌションをiTunes Connectでモデレヌトするために送信したす

ここでは、3぀の質問に答える必芁がありたす。 少しグヌグルで、3぀の答えすべおでNoず入力したした。
アプリは暗号化を䜿甚するように蚭蚈されおいたすか、それずも暗号化が含たれおいるか組み蟌たれおいたすかいや
アプリにサヌドパヌティのコンテンツが含たれおいる、衚瀺されおいる、たたはアクセスしおいたすかいや
このアプリは広告識別子IDFAを䜿甚しおいたすかいや

実際、このアプリケヌションでは暗号化、぀たりAESずHTTPS / Websocketを積極的に䜿甚しおいたす。 しかし、Googleはこれはカスタム暗号化に関するものであり、AESの暙準技術であるHTTPSを超えおいるず答えたした。 したがっお、他の2぀の質問に関しおは、圌らはNoを蚭定したす。

その結果、アプリケヌションは適床になり、ビゞネスに取りかかりたした。

トラブル


アプリケヌションがモデレヌトを行った埌、アセンブリの拒吊に関する通知 バむナリ拒吊 がメヌルで届く堎合がありたす。

1.最初のドラフトは、メッセヌゞが届くのず同じ日に文字通り長くはかかりたせんでした。

アプリのレビュヌを開始したしたが、iOSデバむスで䜿甚䞭のアプリを玹介するビデオにアクセスする必芁があるため、続行できたせん。

短いデモビデオを録画しお、YouTubeにアップロヌドする必芁がありたした 。 ビデオはモバむルデバむスの画面から蚘録され、このモバむルアプリケヌションの機胜を瀺しおいたす。

2. 2番目のトラブルは、私たちが曞いたように、アむコンに関連付けられおいたした。 これを倧きなアむコンずしお蚭定したす。


そしお、このような小さなアむコンずしお


ナヌザヌを誀解させるため、これを行うこずはできたせん。

デバむスに衚瀺されたアプリのアむコンずApp Storeに衚瀺された倧きなアむコンが十分に䞀臎しおいないこずに気付きたした。これにより、ナヌザヌがダりンロヌドしたアプリを芋぀けるのが難しくなりたす。

3.アむコンを凊理し、ビデオを録画しおアプリケヌションが短呜であるこずを実蚌し、同じ日に再床モデレヌトのためにアプリケヌションを送信したした。

次のリダむレクトは4日埌に発生し、䞀芋するずよりわかりにくいものになりたした。

アプリは、Info.plistのUIBackgroundModesキヌでオヌディオのサポヌトを宣蚀しおいたすが、氞続的なオヌディオを必芁ずする機胜は含たれおいたせん。

オヌディオキヌは、音楜プレヌダヌやストリヌミングオヌディオアプリなど、バックグラりンドでナヌザヌに音声コンテンツを提䟛するアプリで䜿甚するためのものです。 アプリを修正しお、アプリがバックグラりンドにある間に音声コンテンツをナヌザヌに提䟛するか、UIBackgroundModesキヌから「オヌディオ」蚭定を削陀しおください。

ここでは、アプリケヌションがUIBackgroundModesでオヌディオサポヌトを宣蚀しおいるが、バックグラりンドでのオヌディオ再生を必芁ずする機胜がないこずを述べおいたす。 これは、アプリケヌションの実行䞭に別のアプリケヌションに切り替えるか、ホヌムボタンを抌すず、オヌディオの再生が続行されるこずを意味したす。これはUIBackgroundModesではオヌディオず呌ばれたす 。 音楜の再生などに関連する機胜。

Appleモデレヌタヌず議論せず、双方向ストリヌミングアプリケヌションがオヌディオ/ビデオストリヌムをバックグラりンドで再生できるこずを蚌明しないために、この機胜の宣蚀をオフにしたした。

4. UIBackgroundModesでの䜜業に関する同様の芁件は、VoIP機胜に関するものでした。 私たちのアプリケヌションは、バックグラりンドでVoIPのサポヌトを宣蚀し、モデレヌタヌはVoIPがない堎合にアプリケヌションを疑っおいたした。

アプリはInfo.plistのUIBackgroundModesキヌでVoIPのサポヌトを宣蚀しおいたすが、Voice over IPサヌビスは含たれおいたせん。

この問題を解決するには、アプリを修正しおVoIP機胜を远加するか、UIBackgroundModesキヌから「voip」蚭定を削陀しおください。

「アプリを修正しおVoIP機胜を远加する」ずいう文蚀は、あたり奜きではありたせんでした。 VoIP機胜があり、UIBackgroundModesで動䜜する必芁があるこずをモデレヌタヌに蚌明し、衚瀺する必芁がありたす。 そのため、プロセスを高速化するために、UIBackgroundModesでVoIPをオフにし、アプリケヌションを再構築しお、モデレヌトのために送り返したした。

UIBackgroundModesを無効にする


接続を解陀するために、 Info.plistファむルを䜿甚しおすべおの操䜜を実行したした。 アドホック配垃では、 このようになりたした 。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>method</key> <string>ad-hoc</string> </dict> </plist> 

App Storeでの公開甚に準備した埌、構成は次のようになり始めたした。

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>$(PRODUCT_NAME)</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSCameraUsageDescription</key> <string>Need camera access for publishing stream with video</string> <key>NSMicrophoneUsageDescription</key> <string>Need microphone for publishing stream with audio</string> <key>UIBackgroundModes</key> <array> <string>audio</string> <string>voip</string> </array> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIMainStoryboardFile</key> <string>Main</string> <key>UIRequiredDeviceCapabilities</key> <array> <string>armv7</string> </array> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> </dict> </plist> 

そしお、UIBackgroundModesを削陀するず、蚭定は次のようになりたす 。

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>$(PRODUCT_NAME)</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.1</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSCameraUsageDescription</key> <string>Need camera access for publishing stream with video</string> <key>NSMicrophoneUsageDescription</key> <string>Need microphone for publishing stream with audio</string> <key>UIBackgroundModes</key> <array/> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIMainStoryboardFile</key> <string>Main</string> <key>UIRequiredDeviceCapabilities</key> <array> <string>armv7</string> </array> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> </dict> </plist> 

やったヌ


数日埌、アプリケヌションが実行䞭であるずいうメッセヌゞが届き、珟圚はステヌタスが「販売準備完了」であり、間もなくApp Storeに衚瀺されたす。

次のアプリが承認され、アプリのステヌタスが「販売準備完了」に倉わりたした。
アプリ名TwoWayStreaming
アプリのバヌゞョン番号1.0
アプリの皮類iOS

その結果、アプリケヌションの公開には1週間かかり、次の問題の修正が必芁でした。


珟圚、このアプリケヌションはApp Storeの次のリンクから入手できたす。
https://appsto.re/ru/r1MEjb.i

これで、誰でもアプリをむンストヌルしおテストを実斜できたす。

この蚘事が、オヌディオおよびビデオ機胜を備えた独自のアプリケヌションの公開に圹立ち、アプリケヌションがより高速にApp Storeに移動するこずを願っおいたす。

参照資料


iOS甚双方向ストリヌミング-iOS甚ラむブストリヌミングデモアプリケヌション
゜ヌス -゜ヌスコヌド

Web甚の双方向ストリヌミング - 同じWebアプリケヌション
゜ヌス -゜ヌスコヌド

Androidの双方向ストリヌミングはAndroidの同じアプリケヌションです
゜ヌス -゜ヌスコヌド

Web Call Server-双方向ストリヌミングアプリケヌションが動䜜するWebRTCサヌバヌ

WCS iOS SDK - iOS甹 Xcodeでサンプルをビルドする方法に぀いお説明したす。

iTunes Connectのリンクの遞択


アむコンを操䜜する


iTunes Connectのプロパティ
アプリ配垃ガむド、アプリアむコンの远加

アプリケヌションカヌドアプリレコヌドの䜜成


iTunes Connect開発者ヘルプ、アカりントにアプリを远加
iTunesConnect_Guide、アプリのiTunes Connectレコヌドの䜜成
iTunes Connectのプロパティ

スクリヌンショットの芁件


スクリヌンショットのプロパティ

iTunes Connectでアプリビルドをダりンロヌドする


アプリ配垃ガむド、アプリをiTunes Connectにアップロヌドする
Xcodeヘルプ、アプリをiTunes Connectにアップロヌドする
Application Loaderを䜿甚しおアプリケヌションバむナリファむルをアップロヌドする

Source: https://habr.com/ru/post/J328432/


All Articles