L'obtention d'un appareil UDID de .mobileconfig
Je suis en train d'écrire la fonction semblable à http://whatismyudid.com/ qu', puis approuvé, sera de retour avec les utilisateurs UDID et de les stocker dans une base de données de référence pour l'avenir avec l'utilisateur.
J'ai écrit .mobileconfig xml doc qui s'ouvre dans le Profil de l'Installateur très bien, mais quand je dis ça pour installer le profil il répond avec [alert] Invalid Profile
mais pas d'alerte du corps. Pas de description, pas de code, pas d'aide.
Je suis nouveau sur le mobile de configuration de jeu de sorte que toute aide serait me passionnent.
Voici mon fichier de configuration:
<?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>PayloadContent</key>
<dict>
<key>URL</key>
<string>http://apps.mortlabs.com/device/retrieve.php</string>
<key>DeviceAttributes</key>
<array>
<string>UDID</string>
<string>IMEI</string>
<string>ICCID</string>
<string>VERSION</string>
<string>PRODUCT</string>
</array>
</dict>
<key>PayloadOrganization</key>
<string>MortLabs.com</string>
<key>PayloadDisplayName</key>
<string>Profile Service</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>B958E359-34C2-42F4-BD0C-C985E6D5376B</string>
<key>PayloadIdentifier</key>
<string>com.mortlabs.profile-service</string>
<key>PayloadDescription</key>
<string>This temporary profile will be used to find and display your current device's UDID.</string>
<key>PayloadType</key>
<string>Profile Service</string>
</dict>
</plist>
Le profil est initialisé par la navigation à http://apps.mortlabs.com/device/enroll.php avec le navigateur safari mobile
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé qu'en utilisant ce qui précède que Apache a parlé à de l'Ipad/Iphone - post par Kyle2011 à https://discussions.apple.com/thread/3089948?start=0&tstart=0 rempli le reste de la solution.
Essentiellement au bas de la retrieve.php page, vous devez rediriger le navigateur vers un répertoire à l'aide d'une ligne similaire à la suivante:-
Où la scolarisation est un répertoire - cela appelle le DirectoryIndex (généralement index.php) qui peut afficher des trucs à votre utilisateur.
Pour remplir le $params de la variable de la ligne suivante en haut de votre retrieve.php script
Vous pouvez ensuite analyser les $données de la chaîne pour obtenir ce dont vous avez besoin (essayez
file_put_contents("data.txt", $data);
ou Kyle2011 exemple)J'ai aussi changé la Charge utile UDID à quelque chose de différent en utilisant
udidgen
dans un terminal sur un Mac plutôt que de simplement en utilisant whatismyudid.com s'.Mise à jour: iOS 7.1 certains des fichiers (l' .plist IIRC) doivent être servis sur https://, ils ne parviennent pas à installer si tout est servi sur http://probablement mieux pour répondre à tout, y compris l' .ipa sur https://pour s'assurer que les futures modifications sur l'Apple côté de ne pas causer un problème.
Remarque sur la dernière page ( DOSSIER ).
Si vous souhaitez utiliser un script de page de redirection en place d'un dossier.
vous pouvez modifier ce :
par
Source : l'en-tête de la fonction sur php.net manuel
c'est du travail !
Essayez de définir l'URL d'une adresse sans .extension php. Cela a résolu le problème pour moi.
Maintenant mon seul problème est que je ne trouve pas comment récupérer les données envoyées à partir de l'appareil iOS sur mon serveur.
Il ne semble pas être dans le $_POST variable.
$return = file_get_contents('php://input');
L'erreur que vous obtenez est parce que iOS s'attend à ce que le profil de l'URL du service (celui qu'il envoie son UDID) de retour d'un profil de configuration (c'est à dire un
.mobileconfig
fichier). Je suis actuellement périphérique de capture avec leur udid sans retour à ce profil; mes appareils générer l'alerte que vous décrivez, mais les données sont sur mon serveur.Pour référence, voici la (très) simple fichier PHP que j'utilise pour capturer les données:
La clé ici est l'utilisation de la
$HTTP_RAW_POST_DATA
variable pour capturer le corps de requête HTTP exactement comme envoyé, sans chercher à analyser dans l'habitude de paires nom/valeur. Je vous suggère de la lecture de la documentation à ce point, mais il n'a pas vraiment vous en dire beaucoup.De sécurité astuce: tout ce que l'utilisateur envoie dans le corps de la requête, vous êtes à l'écriture des fichiers sur votre serveur. Si l'utilisateur décide d'envoyer un script shell, PHP fichiers, ou d'autres contenus exécutables, puis visite de l'URL du fichier que vous créez, ils peuvent exécuter le code de l'venez de télécharger sur votre serveur web. Donc, assurez-vous que le fichier que vous écrivez ne peut pas être consulté via HTTP! (Un
.htaccess
fichier devrait faire l'affaire, ou écrire quelque part en dehors de la racine web.)