iOS:在第三方应用程序(如Spotify)中获取当前曲目的信息真的不可能吗?

时间:2017-02-03 10:45:45

标签: ios avaudioplayer spotify mpmusicplayercontroller

到目前为止,我对此有许多相互矛盾的答案。

this SO thread中,据说使用:

let player = MPMusicPlayerController.systemMusicPlayer()
if let mediaItem = player.nowPlayingItem {
    // ...
}

但是,这仅适用于iOS播放器。例如,如果Spotify正在播放当前歌曲,mediaItem将为nil

我了解Apple的政策不允许访问任何其他应用程序的数据。我现在唯一能做的就是在AVAudioPlayer secondaryAudioShouldBeSilencedHint isOtherAudioPlayingSpotify的帮助下,知道是否有其他玩家播放的歌曲。

但是,我想知道是否有其他方法可以访问它,比如使用# -*- coding: utf-8 -*- import csv, sys from openerp import api, fields, models, _ class sale_order_export_line(models.Model): _inherit = 'sale.order' _auto = False @api.multi def export_lines_to_csv(self): return { 'type' : 'ir.actions.act_url', 'url': '/csv/download/sale_order/%s/supplier_name/%s'%(self.id,'American'), 'target': 'blank', } @api.model def _csv_download(self,vals): order_id = vals.get('order_id') supplier_name = vals.get('supplier_name') so = self.env['sale.order'].browse(order_id) lines = so.order_line.search([('order_id','=',order_id),('supplier_name','ilike',supplier_name)]) columns = [u'Número pedido Dentaltix',u'Nombre de cliente',u'Dirección', u'Código postal', u'Población', u'Provincia', u'País', u'Teléfono', u'Horario de entrega', u'Referencia', u'Cantidad', u'Envío'] csv = u','.join(columns) csv += "\n" if len(lines) > 0: for ol in lines: drupal_order_name = so.drupal_order_name if so.drupal_order_name else '' client_notes = so.client_notes if so.client_notes else '' supplier_ref = ol.supplier_ref if ol.supplier_ref else '' picking_policy = DELIVERY_METHODS[so.picking_policy] if so.picking_policy else 'Directo' product_uos_qty = str(int(ol.product_uos_qty)) if ol.product_uos_qty else '0' csv_row = u'","'.join(data) csv += u"\"{}\"\n".format(csv_row) return csv sale_order_export_line() 框架? (我完全不熟悉它,这只是假设)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我不确定iOS,但可以通过AppleScript在Mac上从Spotify读取当前曲目。我使用Objective C中的这种技术。如果您有兴趣,我可以发布代码。

Spotify在此https://developer.spotify.com/applescript-api/

发布AppleScript API

如果您正在寻找确定正在播放内容的通用方法,那么我认为您会感到失望。每个应用程序都有不同的方法来检索此信息。

答案 1 :(得分:0)

是的,不是。如果您只想检查Spotify是否正在播放,那么Spotify iOS SDK可能会提供此类功能。我真的不知道SDK的功能。

我冒昧地猜测你的实际目标是看看是否有任何第三方框架正在播放;潘多拉,潮汐,Apple音乐,亚马逊Prime音乐等。在这种情况下,您需要一个提供此类功能的框架。

为了安全起见,应用程序是相互沙箱化的,所以是的,除了你有框架并且它提供了这个功能之外,没有办法告诉当前的跟踪信息。