- Home /
Returning assetbundle download progress on mobile
Hello all,
I've been trying to show the assetbundle download progress on Android and iOS. I found this post...
http://answers.unity3d.com/questions/594668/wwwprogress-not-working-on-android-ios-1.html
I understand it has to do with the return header, but I'm new to this and my be missing something simple. The post shows the php with just one assetbundle, "myAssetBundle.unity3d". I tried to adjust it to retrieve any assetbundle from the path I post to it...
Here is my c#:
string location = "http://www.mysite.com/media/" + assetWebLink;
string url = "http://www.mysite.com/media/assetBundle_retrieve.php";
WWWForm form = new WWWForm();
form.AddField("myAction", "download_myAssetBundle");
form.AddField("bundleLocation", location);
WWW assetBundle_get = new WWW(url, form);
//set text to download progress
while(!assetBundle_get.isDone)
{
Debug.Log(assetBundle_get.progress);
int dlProgress = Mathf.FloorToInt(assetBundle_get.progress * 100);
purchaseButtonLabel.text = dlProgress.ToString() + "%";
yield return null;
}
yield return assetBundle_get;
Debug.Log(assetBundle_get.text);
my php:
if($_POST['myAction']=="download_myAssetBundle") {
$location = $_POST['bundleLocation'];
// $escaped_loc = pg_escape_literal($location);
// $attachment_location = $escaped_loc;
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Cache-Control: public");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length:".filesize($location));
header("Content-Disposition: attachment; filename=".basename($location));
readfile($location);
echo "Working properly";
Die();
}
I took out the $escape_loc because it was adding '' around the file location.
I get this error from the debug text...
Warning: filesize(): stat failed for http://www.mysite.com/media/asset_bundles/android/bundlename.assetbundle in /mysite/media/assetBundle_retrieve.php on line 50
Warning: Cannot modify header information - headers already sent by (output started at /mysite/media/assetBundle_retrieve.php:50) in /mysite/media/assetBundle_retrieve.php on line 50
Warning: Cannot modify header information - headers already sent by (output started at /mysite/media/assetBundle_retrieve.php:50) in /mysite/media/assetBundle_retrieve.php on line 51
How can I get the progress if I can't modify the header to send it?
Thanks in advance for any direction!
Jeff
The first warning starts putting content in the response which means the calls to header
afterward fail producing another warning. Look into why stat
fails for your file.
Answer by 3jeffd · Oct 02, 2014 at 04:03 PM
Got it. Thanks brianturner! I looked at the filesize error and found the location was not coming in right. I added a name field for the filename as well because using the location was incorrect.
$location = $_POST['bundleLocation'];
$bundleName = $_POST['bundleName'];
$attachment_location = $location;
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Cache-Control: public");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length:".filesize($attachment_location));
header("Content-Disposition: attachment; filename=".$bundleName);
readfile($attachment_location);
Works perfectly!
I am working on web app and having same issue. Where should i must write this code??
Answer by jeck001 · Nov 17, 2016 at 09:55 AM
hi, 3jeffd please tell where to paste this php code in server and with what name.
Your answer
Follow this Question
Related Questions
PHP Calls dont work on mobile 0 Answers
Allow player delete Asset Bundle 1 Answer
Asset Bundles with In-App Payment in Unity Mobile 1 Answer
Asset Bundles compatibility for mobile 1 Answer
Creating an asset bundle at runtime 1 Answer