Вы можете использовать json_decode () для преобразования строки json в объект / массив PHP.
Например.
Вход:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
Выход:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
Несколько точек для запоминания:
json_decode
требует, чтобы строка была действительной json
, иначе она вернется NULL
. json_last_error()
можно использовать для определения точного характера ошибки. utf8
контент, или json_decode
может выйти из строя и просто вернуть значение NULL
. Да, вы можете воспроизводить звук, когда телефон настроен на вибрацию. Просто используйте класс AVAudioPlayer.
По умолчанию воспроизведение звука аудио-сессии будет ~ не соответствовать настройке переключателя отключения звука на iPhone. Другими словами, если вы звоните, чтобы воспроизвести звук, а тихий (аппаратный) переключатель на iPhone настроен на молчание, вы все равно услышите звук.
Это то, что вы хотите. Итак, теперь вы знаете, что воспроизведение аудио сессии, когда ваш телефон находится в бесшумном режиме, по-прежнему будет воспроизводить звук, который вам просто нужно знать, как создать аудио-сессию для воспроизведения звука, например: взято с этого сайта: http: //iosdevelopertips.com/audio/playing-short-sounds-audio-session-services.html
SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:@"RapidFire" ofType:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID); AudioServicesPlaySystemSound (soundID);
Для этого вам нужно будет импортировать файл заголовка, а также добавьте AudioToolbox.framework в ваш проект.
И все.
Итак, из этого ответа вы теперь знаете, что вы можете воспроизводить звук, пока телефон вибрирует. Вам не нужен дополнительный или специальный код, который позволит вам выполнять эту функцию, поскольку она уже делает это по умолчанию.
Pk
для Objective C, вы можете воспроизводить системный звук с помощью следующего кода:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
*The system path could be modified.*
NSString *path = @"/System/Library/Audio/UISounds/begin_record.caf";
NSURL *url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[player play];
Просто поместите это в свой viewDidLoad
:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory), &sessionCategory);
Работает на iOS 6 и выше
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) } catch let error as NSError { // report error }
– Guy
15 April 2016 в 20:14
Для воспроизведения звука в бесшумном режиме и даже когда он идет на задний план, попробуйте следующее:
Поместите этот код в приложение: didFinishLaunchingWithOpitons:
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
и этот код в applicationDidEnterBackground:
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
Также установите фоновый режим воспроизведения аудио / воздушного воспроизведения и включите заголовок AVFoundation.
И для Swift 2 и Swift 3
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
} catch {
print(error)
}
Это нецелесообразно, но кто я такой, чтобы сказать, что вы не можете этого сделать. У вас может быть веская причина для воспроизведения звука.
Если вы используете Audio Sessions, включите <AVFoundation/AVFoundation.h>
в начале вашего файла, а
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategoryPlayback
error: nil];
должны выполнить трюк. Обратите внимание, что если вы воспроизводите музыку или звуки, воспроизведение iPod будет приостановлено.
Как только это было сделано, возможно, где-то в инициализации одного из ваших классов, который воспроизводит звуки, вы можете создавать такие звуки:
// probably an instance variable: AVAudioPlayer *player;
NSString *path = [[NSBundle mainBundle] pathForResource...];
NSURL *url = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url];
Когда это будет сделано, вы можете играть с ним в любое время, когда хотите:
[player play]; // Play the sound
[player pause]; // Pause the sound halfway through playing
player.currentTime += 10 // skip forward 10 seconds
player.duration // Get the duration
И другие приятные вещи. Посмотрите ссылку на AVAudioPlayer .
AVAudioSession
перед представлением AVPlayerViewController
. Если я установил категорию в блоке завершения вызова presentViewController
(и до фактического вызова play()
), он отлично работает в обоих семействах устройств.
– Jerrot
10 February 2017 в 15:44