玫瑰和月季有什么区别| 衣原体感染男性吃什么药| 5月12日什么星座| 尿道炎吃什么药好| 宫颈肥大有什么危害| 下身瘙痒是什么原因| 不完全性右束支传导阻滞是什么意思| 月相是什么意思| 夏天穿什么鞋子| left是什么意思| 白白的云朵像什么| 一什么树| 大步向前走永远不回头是什么歌| pnc是什么意思| 梦见别人怀孕是什么意思| 降钙素原检测是什么| 清明吃什么| 屁股出汗多是什么原因| 气血不足是什么引起的| 六味地黄丸有什么功效与作用| 低氧血症是什么意思| 编程属于什么专业| 牌匾是什么意思| 右肺下叶钙化灶是什么意思| 大惊小怪是什么意思| 喉咙有异物挂什么科| 腊肠炒什么好吃| 什么是偏光眼镜| 为什么警察叫条子| 肺虚吃什么药| dose是什么意思| 晴雨伞是什么意思| 孕早期是什么时候| 中央电视台台长是什么级别| 戈美其鞋子是什么档次| 眼睛双重影什么原因| 儿童说话晚去医院挂什么科| 同房有什么好处| 吃什么会影响验孕棒检验结果| 10.17是什么星座| 摩羯座的幸运色是什么| 魏大勋什么星座| 妈妈过生日送什么礼物好| 青皮是什么皮| 女生适合抽什么烟| 南京有什么| 梦到老虎是什么意思| 1RM什么意思| 2023年是什么生肖年| 洗衣机什么牌子好| 嗓子哑是什么病的前兆| 什么叫溶血| 潴是什么意思| 话费为什么扣那么快| 黄精泡水喝有什么功效| 袋鼠是什么动物| 希特勒为什么要杀犹太人| 腺样体增生是什么意思| 胸部彩超能检查出什么| 60岁男人喜欢什么样的女人| 光宗耀祖是什么意思| 恭候是什么意思| 捻子泡酒有什么功效| 白内障的主要症状是什么| 黄皮不能和什么一起吃| 横批是什么意思| 吃鹅蛋对孕妇有什么好处| 刻板印象是什么意思| 甲状腺4级是什么意思| 八月13号是什么星座| library是什么意思| 咽炎挂什么科室| 白细胞异常是什么原因| 违拗是什么意思| 土豪是什么意思| 宝宝缺钙吃什么补得快| 变更是什么意思| 什么是尿毒症| 韬字五行属什么| 吝啬鬼是什么生肖| 舌头痛吃什么药好得快| 土笋冻是什么虫子| 蓝色药片是什么药| 什么潭什么穴| 喉咙痒想咳嗽吃什么药| 了了什么意思| 真菌孢子阳性什么意思| 支原体吃什么药| 胎位loa是什么意思| 花裙子配什么上衣好看| 最贵的榴莲是什么品种| 冰岛说什么语言| 胃痞病是什么病| 梦见别人流血是什么预兆| 什么时候锻炼身体最佳时间| 成人大便绿色是什么原因| 放屁臭是什么原因| 和田玉籽料是什么意思| 金牛后面是什么星座| c3是什么意思| 一个入一个肉念什么| 糖尿病的人可以吃什么水果| 什么来迟| avg是什么意思| 春节是什么时候| 什么人不宜喝咖啡| 肾有问题有什么症状| 电饭煲什么牌子好| nz是什么意思| 小肚子疼吃什么药| 共济失调是什么病| 翡翠是什么材质| 什么品牌的奶粉最好| 4.22是什么星座| 梦见着火了是什么征兆| 什么是交际花| 什么病才吃阿昔洛韦片| 感冒反复发烧是什么原因引起的| 精囊腺囊肿是什么意思| 什么是碳水食物| 实证是什么意思| 英寸是什么单位| 苏慧伦为什么不老| 梦见和别人打架是什么意思| 羽字属于五行属什么| 肝郁气滞血瘀吃什么药| 长裙配什么鞋| 疱疹用什么药可以根治| 经常抽筋是什么原因| 半盏流年是什么意思| 一什么新闻| 肩周炎用什么药| 冷笑是什么意思| 降压药什么时间吃最好| 年轻人白头发是什么原因引起的| 了了什么意思| 窝沟封闭是什么| 白巧克力是什么做的| 九层塔是什么菜| 什么是一桌餐| 教科书是什么意思| 膝盖背面叫什么| 肺气肿吃什么药| 臭鼬是什么动物| o2o什么意思| 陆地上最重的动物是什么| 浸润是什么意思| y谷氨酰基转移酶高是什么原因| 为什么不吃猪肉| 补肾壮阳吃什么药效果好| 脾阴虚吃什么中成药| 什么火海| 空调外机不出水是什么原因| 栀子有什么功效| 单人旁的字有什么| 试金石什么意思| 喉结下面是什么部位| 出水痘能吃什么食物| 胡子白了是什么原因| 梦见蟒蛇是什么意思| 郎酒是什么香型| 今年男宝宝取什么名字好| 横财是什么意思| gucci是什么品牌| 三冬是什么意思| 尿喝起来是什么味道| 冬天吃什么| 丙辰是什么时辰| 勤劳的小蜜蜂什么意思| 劼字取名的寓意是什么| 内心独白什么意思| 男人硬不起来该吃什么药| hpv是什么病毒| 膀胱过度活动症是什么原因引起的| 梦见小鬼是什么预兆| 坚持是什么意思| 圆房是什么意思| 结婚13年是什么婚| 高定是什么意思| 姨妈期不能吃什么| 欧派什么意思| 傻子是什么意思| 总胆固醇高吃什么药| plt是什么| bmi是什么意思| 莫名其妙的名是什么意思| 结售汇是什么意思| 槊是什么兵器| crocs是什么牌子| 血糖高吃什么水果好能降糖| 惜字如金什么意思| 头晕什么原因| 从未是什么意思| 睡眠障碍应该挂什么科室| 六月十四号是什么星座| 猪咳嗽用什么药效果好| spoRT是什么| 普惠性幼儿园是什么意思| 什么是抗阻运动| 底细是什么意思| 南宁晚上有什么好玩的地方| spank是什么意思| 北海特产有什么值得带| 小蜜蜂是什么牌子| 肚子左下方是什么器官| 苏格兰牧羊犬吃什么| 手掌红是什么原因| l5s1椎间盘突出是什么意思| 为什么韩国叫棒子国| 墨西哥说什么语言| 白带黄是什么原因| 耋是什么意思| 拉肚子为什么肛门痛| romantic什么意思| 爽约什么意思| 灰指甲用什么药最好| 吃什么会胖| 什么叫基因| 健康证需要什么材料| 燊字五行属什么| 多金是什么意思| 女人的逼长什么样| 移动硬盘什么牌子好| 为什么不敢挖雍正陵墓| 白细胞十十是什么意思| 什么是有机磷农药| 年轻人能为世界做什么| 三聚净戒是指什么戒| 小马拉大车什么意思| i是什么| 吃什么对脾胃好| 净身出户是什么意思| 98年属什么的| 暗的反义词是什么| 孩子不好好吃饭是什么原因| si是什么元素| 耳鸣挂什么科| 秘密是什么意思| 606是什么意思| 姘头是什么意思| 01属什么| 梦见把狗打死了是什么意思| 口腔溃疡一直不好是什么原因| 嗜碱性粒细胞偏高是什么原因| 柠檬水喝多了有什么坏处| 什么是直辖市| 今年33岁属什么生肖的| 冰藤席是什么材质| 韭菜籽配什么壮阳最猛| 走后门什么意思| 印是什么意思| 九月九日是什么日子| 鼻子肿了又硬又疼是什么原因| 长胸毛的男人代表什么| 吃什么能快速降血压| 吃什么排肝毒最快| 喜欢紫色代表什么| 经常拉肚子吃什么药| 做梦梦见火是什么征兆| 睡不着什么原因| 血脂是指什么| 耳根子软是什么意思| 象是什么结构的字| 多普勒超声检查是什么| 百度

View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Videos

Open Menu Close Menu
  • Collections
  • Topics
  • All Videos
  • About

More Videos

  • About
  • Transcript
  • 海口发布产品质量计量“红黑榜” 6家企业上“...

    百度 通过加强组织队伍建设,把党的政治优势转化为国企的战斗力。

    The future of device management is here: Learn how you can support mobile device management while allowing individual devices to be autonomous and proactive, bringing both increased performance and scalability. We'll show you how you can incorporate this declarative model in your MDM solution.

    Resources

    • Device Management
      • HD Video
      • SD Video

    Related Videos

    WWDC23

    • Explore advances in declarative device management

    WWDC22

    • Adopt declarative device management

    WWDC21

    • What’s new in managing Apple devices
  • Search this video…

    ? Bass music playing ? ? Melissa Nierle: I'm Melissa Nierle, a software engineer on the Enterprise and Education Technologies team.

    At Apple, we're always working to create the best device management features and functionality to equip our enterprise partners and education organizations with the tools they need to connect their team members and students.

    The backbone of all of these management features is the MDM protocol itself.

    The protocol is a well-established, heavily used solution provided directly within iOS, macOS, and tvOS and has become a standard across mobile device management.

    And while we add features to it each year, we also continually evaluate the protocol against our device management goals and evolve it to meet the dynamic needs of MDM solution developers, admins, and users.

    Today, our MDM protocol can be described as an imperative and reactive protocol.

    Each management workflow takes time and multiple round trips between the device and server.

    Then any performance challenge is compounded when you manage a large number of devices across an organization.

    This is an example of where we want to ensure our protocol is as performant and scalable as possible.

    And to achieve optimal performance and scalability, we've reenvisioned the MDM protocol itself.

    The future of device management is declarative management; a transformative update to the protocol which brings policy management to the device.

    Declarative management allows the device to be autonomous and proactive, freeing up the server to be lightweight, reactive, and subscribe to updates without constant polling.

    An autonomous device reacts to its own state changes and then applies management logic to itself without prompting from the server.

    A proactive device has a status channel asynchronously reporting to the server when important state changes occur, avoiding the need for servers to poll devices.

    Enabling devices to be both autonomous and proactive is the foundation of declarative management and allows for increased performance and scalability.

    And the best part is, while it's a new paradigm, it's not a new protocol.

    We've built this new declarative functionality right into our existing MDM protocol, starting with iOS devices.

    We'll take a deep dive into the data model that powers the new declarative paradigm.

    Then later, we'll talk about integration with MDM.

    We'll go through a specific example and learn how to get yourself started.

    Let's begin with the declarative data model.

    There are three pillars to the declarative data model.

    Declarations, which are payloads that the server defines and sends to devices; the status channel, which is a new channel of communication where the device proactively updates the server with new information about itself; and extensibility, so that, as Apple introduces new features to declarative management, your devices and servers handle it seamlessly.

    Understanding these three pillars will prepare you to incorporate declarative management into your MDM solution.

    Let's start with declarations.

    Declarations represent the policy an organization wants to enforce on devices -- for example, accounts, settings, and restrictions.

    Declarations can be created for policy that is common to all users, as well as policy that is specific to a single user or device.

    Let's examine the makeup of declarations.

    The data representation for declarations is similar to profiles, where a declaration is also a dictionary with a set of keys and standard types for values.

    Declarations, however, are serialized as JSON objects when sent over the network, instead of plists.

    All declarations have three required properties: Type, Identifier and ServerToken.

    Type defines which policy a configuration represents.

    The Identifier key has a value that uniquely identifies the declaration within the set of all declarations sent to the device.

    Typically, this will be a UUID represented as a string.

    The device uses this value when synchronizing declarations with the server.

    The ServerToken key represents a unique revision of the declaration based on the Identifier key.

    This key is also used when synchronizing declarations with the server.

    The value is a string that must be different for each revision.

    It could be a simple counter or a UUID string, as shown in the example.

    The payload is a data-specific piece of the declaration, containing the keys and values pertinent to the declaration type.

    Just like with profile payloads, some keys may be required, and others may be optional.

    Values can be strings, numbers, booleans, arrays, or dictionaries and may be constrained in range -- like numbers one through ten -- or to a specific set of values like a string enumeration.

    There are four types of declarations: configurations, assets, activations, and management.

    The first type of declaration is a configuration.

    Configurations represent the policies to be applied to the device -- for example, accounts, settings, and restrictions.

    Configurations are similar to MDM's existing profile payloads.

    Here is an example of a configuration declaration that applies restrictions to the device passcode.

    The standard keys -- Type, Identifier, and ServerToken -- are present, as required for all declarations.

    The value of the Type identifies this as a passcode configuration type of declaration.

    The Payload key contains the passcode policy data for the configuration.

    The next type of declaration is an asset.

    Assets represent references to ancillary data needed by configurations.

    This can be a shared item of large data or a personalized one.

    For large data items, the asset declaration contains a URL that the device uses to fetch the actual asset data from a server.

    This server could be your MDM server, or it could be a separate content delivery network server.

    Serving assets from a separate content delivery network shifts the burden of supporting large network bandwidth to a service better suited for it.

    Assets can also be used to represent data specific to a user, such as their name, email address, passwords for accounts, and certificates.

    This takes the per-user customized data out of configurations and moves it into smaller, dedicated asset-type declarations.

    Assets have a one-to-many relationship with configurations.

    For example, one credential asset can be referenced by several account configurations, avoiding the need to replicate the same user information in each account configuration.

    Then, if the user credential needs to be updated, only that asset needs to be updated.

    All the configurations referencing that asset remain unchanged, and the device updates the policy accordingly.

    The ability to do incremental updates like this, for many configurations at a time, will improve the overall responsiveness of the device management system.

    Let's examine the makeup of an asset declaration.

    Here is an example of an asset declaration that defines a user identity -- essentially the contact information for a user.

    The three required standard keys are present, and the value of Type defines this as a user identity asset declaration.

    The Payload key contains the user identity properties of this asset.

    The next type of declaration is an activation.

    Activations represent sets of configurations that the device will atomically apply.

    This means all configurations in the set, along with any referenced assets, must be valid in order for all of them to be applied.

    If any are invalid, the activation will fail to apply the associated policy.

    Here is an example of a simple activation that contains two configurations.

    The three required declaration keys are present, and the payload contains the set of configurations to be atomically applied by the activation.

    Configurations are referenced by their identifier key.

    There is a many-to-many relationship between activations and configurations.

    Activations can refer to multiple configurations, and a configuration can have multiple activations reference it.

    This many-to-many relationship allows for complex business logic to be handled autonomously by the device.

    Activations can include a predicate that determines when the activation state is active or inactive on a device.

    The device will only process the configurations referenced by an activation if the predicate evaluates to true.

    As an example, a predicate can declare that the particular activation is only active on a specific device type, such as an iPad.

    Another example is wanting a set of policies to apply only to a particular version of the OS.

    This allows the server to send all the declarations for any device states and lets the device itself determine which ones to apply, making the device even more autonomous.

    As the device state changes, the activation predicates are reevaluated without intervention from the server.

    Policy associated with the new device state will be applied and any outdated policy removed.

    The device here becomes increasingly proactive.

    In the absence of a predicate, the device will always process the configurations referenced by the activation.

    Here we have the activation example from before, but now there's a predicate present, indicating that this activation should only have its policy applied when the device is an iPad.

    The last type of declaration is a management declaration.

    Management declarations are used to convey overall management state to the device.

    This includes a declaration describing details about the organization as well as a declaration that describes the capabilities of the server.

    These declarations are helpful for conveying static information to the device.

    And those are the four types of declarations for applying organization policy to your devices.

    The second pillar of the new declarative management data model is the status channel.

    Given the way that declarations work, the declared state of the device may not match the actual state of the device at any point in time.

    For instance, any declaration that requires user interaction will not apply until that action is taken.

    A good example of this is a passcode policy, where the user has to take action to create a new policy-compliant passcode for the device.

    To add visibility into this device state transition, we've created the status channel.

    Updates of the device state are sent in a status report to the server.

    The server can subscribe to specific status items, so it only receives updates for the changes it cares about.

    Status items are identified by key-paths, which consist of period-separated string tokens.

    Status items can be used as expressions in activation predicates, as shown in the earlier activation predicate example.

    The server subscribes to specific status items using status subscription configurations.

    Upon receiving this configuration, the device will send an initial status report for the subscribed status items, and then send a report if a subscribed item changes.

    The status reports are incremental, so only the changed items are reported.

    The status of declarations -- whether they are applied or not -- is always reported to the server when changed, without the need for the server to subscribe.

    Let's inspect a configuration that subscribes to specific status item updates.

    This configuration subscribes to three status items representing the device's operating system version, type, and model.

    When this configuration is activated on the device, it will send the initial status report for each of the newly subscribed status items.

    Status items are represented as a JSON object, nested by the hierarchical components of that corresponding key-path.

    In this case, the device reports it is on iOS 14.5.

    When the user updates the software to the latest iOS version, the device will report the status change for the operating-system version item.

    The server now detects that the device has been upgraded to iOS 15.

    The third pillar of the declarative data model is extensibility.

    Given the long life cycle of Apple products, it is essential to maintain compatibility between different versions of your MDM solution with Apple devices, especially as software updates and new hardware models are released.

    With declarative management, both the device and server now advertise supported capabilities to each other.

    Each knows when it can start taking advantage of new features without having to hardcode software version or hardware dependencies.

    The capabilities that the server and client both advertise includes a list of supported features representing both minor and major protocol updates.

    The client also advertises supported payloads, which lists the full set of declarations and status items supported by the client.

    The server's capabilities are sent to the device via a management declaration.

    When the server is upgraded, it synchronizes all new capabilities to the device just as it would any other type of declaration.

    The device is immediately able to take advantage of the server's new features.

    The client's capabilities are sent to the server as a specific status item any time capabilities change.

    This way, the server can immediately start taking advantage of the device's new features and payloads.

    Building extensibility into the declarative data model ensures that declarative management is built for the present and the future.

    Now that you understand the data model, let's dig into how declarative management is seamlessly integrated within the MDM protocol.

    Existing MDM vendors can use declarative management features starting today.

    Declarative management is integrated into the MDM protocol and utilizes it for managing the enrollment and unenrollment process and for handling the HTTP transport and device and user authentication.

    Existing and mature MDM products can smoothly transition to declarative management without a disruptive change to adopt a new protocol or server infrastructure.

    Declarations and the status channel coexist with your already in-use MDM commands and profiles in an extensible way.

    This allows you to gradually adopt the different features of declarative management without having to update all of your MDM workflows at once.

    For example, a server could choose to only implement status subscriptions, effectively adding a status channel to the MDM protocol without having to adopt all of declarative management.

    When the device is unenrolled from MDM, all declarations are removed, and the device state is adjusted accordingly.

    Importantly, declarative management does not impact existing MDM behavior at all.

    Actually, declarative management leverages existing MDM behaviors using an MDM command for activation and an MDM CheckIn request for synchronization and status reports.

    Let's zoom in on each of these next.

    A DeclarativeManagement command has been added to MDM.

    This command serves two purposes.

    First, it activates the declarative management features on the device.

    Please note, once turned on, declarative management cannot be turned off.

    However, the server can remove all declarations to effectively disable declarative management.

    Second, the command can include a payload containing synchronization tokens that will initiate a synchronization flow if needed.

    There is also a new DeclarativeManagement CheckIn request type used by the device when synchronizing declarations and to send status reports to the server.

    Here is an example of the new CheckIn request type.

    The MessageType key is set to the new DeclarativeManagement value.

    The endpoint key is set to a value indicating that the client is making a request to retrieve the declaration manifest data from the server.

    Some requests -- such as this status report -- can also include Base64-encoded data.

    When using the CheckIn request to synchronize declarations, there will be a response from the server.

    There are two types of responses: a manifest, which lists the identifier and server token properties of all declarations that the server defines; and single declarations for the device to apply.

    Now that you've learned how to activate declarative management and synchronize declarations with a CheckIn request, let's talk about how you can migrate your policies gradually from profiles to declarations.

    There's a declaration type specifically for sending and installing profiles as configurations.

    This enables you to utilize the full suite of MDM profiles to immediately take advantage of declarative management by shifting profile-based policy logic to the device.

    Here is an example of a profile configuration.

    The profile is referenced via URL.

    When this configuration is activated, the profile is fetched from the URL and installed on the device.

    We've taken these steps to make declarative management easy to adopt today with the iOS 15 beta.

    Now let's go through an example of how declarative management interacts with the server.

    First, we activate declarative management.

    This starts with the device already enrolled in MDM.

    The server sends a push notification to the device.

    The device responds to the push in the usual way, by sending a ServerURL endpoint request with its status set to Idle.

    The server then responds with the DeclarativeManagement command.

    Upon receipt, the device activates declarative management.

    After processing the DeclarativeManagement command, the device sends an Acknowledged status back to the server.

    Then if the server has no more commands, it will return an empty response.

    The device then starts its declarative management synchronization process; let's go through that next.

    The device first sends a CheckIn request with the endpoint key set to declaration-items.

    The server responds with a manifest containing declaration metadata.

    The device then compares the items in the manifest to the set of declarations it previously received from the server.

    Through this comparison, the device can tell which declarations are new, which have changed, and which have been removed.

    For each new or changed declaration, the device sends a CheckIn request.

    This request's EndPoint key is set to a path uniquely identifying the declaration resource.

    The server then responds with the JSON object representing that declaration.

    Once all declarations have been fetched from the server, the device starts applying the policy changes represented by this updated state of declarations.

    Once the policy changes have been applied, the device will send a status report to the server, with the corresponding updated status items.

    To help get you started, let's go through what we are shipping in iOS 15.

    The declarative management feature is supported on devices with iOS 15 and iPadOS 15.

    It's also only available when the MDM enrollment type is a user enrollment -- either the new onboarding flow introduced with iOS 15, or the flow from iOS 13.

    For configurations, we have account and passcode configurations that cover the equivalent set of MDM account and passcode profile payloads.

    We also support profile configurations enabling you to start installing the full suite of MDM-supported profiles to your devices declaratively.

    Status subscription configurations are also available today and are used for the server to declare the specific status item updates it wants to receive.

    There is one type of activation available today.

    This simple activation defines a list of configurations that must be applied atomically and may include an optional predicate.

    For asset declarations, there are two types available: user identity assets, which represent a user's contact information; and user credential assets, which contain user IDs and passwords for user accounts.

    For management declarations, we are supporting two types: organization details and server capabilities.

    Next, here are the status items available today.

    Each declaration has its own status item that is automatically sent to the server from the device.

    Also available are a set of status items that cover basic properties of the device, like details about a device's hardware model and its operating system.

    For more detail on these declarations and status items, check out Apple's Device Management developer documentation.

    Today we covered the new paradigm of declarative management and its functionality, discovering how declarative management empowers you to make devices more autonomous and proactive.

    We learned how to integrate declarative management into your MDM solution.

    We went through an example showing how declarative management works and reviewed how declarative management is ready for you to start using today.

    We can't wait to find out how you'll reinvent MDM solutions with declarative management.

    Thanks for joining me and have a great WWDC.

    ?

Developer Footer

  • Videos
  • WWDC21
  • Meet declarative device management
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Extensions
    • App Store
    • Audio & Video
    • Augmented Reality
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright ? 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines
    总胆固醇高说明什么 梦见钱包丢了是什么意思 腻害什么意思 尿突然是红褐色的是什么问题 深明大义是什么意思
    知了长什么样 抑制什么意思 皈依是什么意思 腾冲有什么好玩的景点 咕咾肉是什么肉
    小孩肠胃感冒吃什么药比较好 伤官是什么意思 脸色发青是什么原因引起的 胃病烧心吃什么药好 士加一笔是什么字
    麾下是什么意思 骨质增生是什么症状 属鼠的和什么属相相克 涂素颜霜之前要涂什么 美国为什么打伊拉克
    赵云的坐骑是什么马hcv8jop7ns0r.cn 嬷嬷什么意思hcv8jop7ns4r.cn 菠萝蜜什么味道hcv7jop6ns8r.cn ks是什么意思jinxinzhichuang.com 两肺纹理增重什么意思hcv8jop3ns2r.cn
    什么是偏旁什么是部首hcv8jop4ns5r.cn 甘油三酯高吃什么好creativexi.com 四川人为什么喜欢吃辣hcv9jop3ns6r.cn 雌二醇是什么意思hcv8jop0ns6r.cn tvb是什么adwl56.com
    脾与什么相表里xianpinbao.com 环磷酰胺是什么药clwhiglsz.com 乳房胀痛是什么原因hcv8jop2ns5r.cn 朱砂有什么用hcv9jop6ns4r.cn 女人什么发型最有气质hcv7jop6ns0r.cn
    为什么妇科病要肛门塞药hcv9jop6ns1r.cn 人中有痣代表什么hcv8jop7ns7r.cn 牛顿三大定律是什么hcv9jop4ns7r.cn 梦见菊花是什么意思啊hcv7jop6ns7r.cn 藏红花的功效是什么inbungee.com
    百度