当前位置:   article > 正文

苹果个人开发者自动发包(超级签)教程(1)-UDID获取_描述文件自动注册uuid到服务器

描述文件自动注册uuid到服务器

最近ios15上新,企业签升级导致被封  想起了苹果的个人开发账号的100个绑定名额,由于一些app性质原因,用不了第三方的超级签功能所以东找西找拼凑出来这么一套。

总结出流程 :

        准备材料:开发者账号续费,开发者账号证书创建(Certificates),身份认证创建(Identifiers),其中证书创建和身份认证创建都是可以在接口中实现,这边为了省力就在后台创建了 Sign In - Apple

        一、获取用户设备信息 

        二、用户设备信息上传到苹果开发者后台.

        三、新建描述文件信息并下载

        四、对ipa包重新签名并重新发布新包

不足之处大家多多指导。

获取用户设备信息

首先获取UDID的需要苹果用户安装 描述文件  来获取用户的设备信息

操作步骤 1、用户下载描述文件    2、设置通用中安装描述文件    3、安装好后会通过描述文件中的通知地址 发送需要的信息到服务端  4、服务端接收消息处理   

获取udid的流程就是这样,下面是具体方式

1、描述文件准备

下面是描述文件的内容,根据自己的情况修改

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>PayloadContent</key>
  6. <dict>
  7. <key>URL</key>
  8. <string>https://XXXXXXXXX.com/test.apsx</string> <!--通知地址-->
  9. <key>DeviceAttributes</key>
  10. <array>
  11. <string>UDID</string> <!--需要获得的参数往里加-->
  12. <string>DEVICE_NAME</string>
  13. <string>VERSION</string>
  14. <string>PRODUCT</string>
  15. <string>MAC_ADDRESS_EN0</string>
  16. <string>IMEI</string>
  17. <string>ICCID</string>
  18. </array>
  19. </dict>
  20. <key>PayloadOrganization</key>
  21. <string>简介</string>
  22. <key>PayloadDisplayName</key>
  23. <string>名称</string>
  24. <key>PayloadVersion</key>
  25. <integer>1</integer>
  26. <key>PayloadUUID</key>
  27. <string>B5F0BB7E-4E7E-CAD8-BFB5-492F32FB831B</string>
  28. <key>PayloadIdentifier</key>
  29. <string>xxx</string>
  30. <key>PayloadDescription</key>
  31. <string>简介</string>
  32. <key>PayloadType</key>
  33. <string>Profile Service</string>
  34. </dict>
  35. </plist>

以上代码复制到本地  以demo.mobileconfig 后缀名保存,然后放到服务器端 

在服务器中配置MIME

扩展名: .mobileconfig

类型:application/x-apple-aspen-config

新建一个html   里面放个链接 指向刚刚的描述文件下载

<a href="./demo.mobileconfig">点我</a>

在苹果默认浏览器中打开后点击 会提示  是否安装  点击允许即可

在设置通用描述文件中  可点击对应的描述文件查看配置的详细信息

2、服务端

用户安装完描述文件后 苹果会发送用户设备信息到文件中配置的地址

<string>https://XXXXXXXXX.com/test.apsx</string>  <!--通知地址-->

发送内容如下:

  1. 0? *?H??
  2. ??0?10 0? *?H??
  3. ??$???<?xml version="1.0" encoding="UTF-8"?>
  4. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  5. <plist version="1.0">
  6. <dict>
  7. <key>IMEI</key>
  8. <string>35 ***** ******* 2</string>
  9. <key>PRODUCT</key>
  10. <string>iPhone10,3</string>
  11. <key>UDID</key>
  12. <string>3931e******************032b2bd</string>
  13. <key>VERSION</key>
  14. <string>1****</string>
  15. </dict>
  16. </plist>
  17. ??
  18. [0??0?\?
  19. ?????b?0
  20. *?H??
  21. 0Z10 UUS10U

前后部分都是乱码   只要截取中间xml部分内容即可

.net为例

  1. int start = curTxt.IndexOf("<!DOCTYPE plist"); //获取xml开始的索引
  2. int end = curTxt.IndexOf("</plist>"); //获取xml结束的索引
  3. string xml = curTxt.Substring(start, end - start + "</plist>".Length); //获取xml内容

获取到的xml内容中 我们只用到了  dict节点的模块  里面的数据 是一行key  一行value 所以这里可以循环节点对象获取udid

  1. string udid = string.Empty;
  2. int index = 0;
  3. foreach (XmlElement item in q.ChildNodes)
  4. {
  5. switch (item.InnerText.ToUpper())
  6. {
  7. case "UDID":
  8. udid = q.ChildNodes[index + 1].InnerText; //获取到对应的key之后 索引加1 获取值
  9. break;
  10. default:
  11. break;
  12. }
  13. index++;
  14. }

到此  用户UDID已经获取到手

最后 这里还需要做一个301重定向不然苹果会认为描述文件安装失败

  1. string url = "https://*********/test.html?UDID=123*************23;
  2. Response.StatusCode = 301;
  3. Response.Status = "301 Moved Permanently";
  4. Response.AppendHeader("Location", url);
  5. Response.AppendHeader("Cache-Control", "no-cache");
  6. Response.End();

到此  获取用户UDID 已处理完成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/321756
推荐阅读
相关标签
  

闽ICP备14008679号