For the unseen masses who are able to get an NRF52 SDK14 peripheral to connect to Android but not IOS, the solution was to copy the calls to nrf_ble_gatt_init, nrf_ble_gatt_att_mtu_periph_set, nrf_ble_gatt_data_length_set, sd_ble_opt_set from
Initializing these bits became required, somewhere in the SDK versions between 8 & 14. Someone porting from SDK version 8 to version 14 would have a long search, indeed. Norwegian abstraction layer writers haven't discovered abstraction.
There's no reason to set the NRF_SDH_BLE_GATT_MAX_MTU_SIZE any smaller than 247. The packet size can be changed dynamically by setting attr_md.vlen = 1; in the ble_gatts_attr_t struct. They also set the max_len in the ble_gatts_attr_t struct to NRF_SDH_BLE_GATT_MAX_MTU_SIZE.