日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小米 app消息推送服务器,APP使用小米消息推送自定义铃声iOS版

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小米 app消息推送服务器,APP使用小米消息推送自定义铃声iOS版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正 文:

APP使用小米消息推送sdk的情況下,怎么自定義鈴聲呢?項目場景是利用Hbuilder云端打包iOS版,我們拿到手的是云端打包好的.ipa文件,和Hbuilder技術溝通,得到明確的答復是云端打包不支持添加自定義的聲音資源到ipa包里去,只能離線打包。看來Hbuilder還是任重而道遠啊,有很多技術細節還要不斷完善。

自定義通知聲音需要滿足以下條件:

1. 聲音文件必須放在app bundle中

2. 聲音文件的格式只支持aiff, wav, caf

3. 聲音文件的時長不能超過30秒,否則會用默認系統通知聲音替代。

具體做法:

1. 將聲音文件 pushsound.aiff 拖入Xcode工程的main bundle的目錄下

2. 發送推送的時候設置SDK自定義聲音字段 soundURL = “pushsound.aiff”,在收到消息的中,”aps”: { “sound” : “pushsound.aiff”}

再看下apple官方對于消息推送自定義鈴聲的說明文檔:Preparing?Custom?Alert?Sounds

Local?and?remote?notifications?can?specify?custom?alert?sounds?to?be?played?when?the?notification?is?delivered.?You?can?package?the?audio?data?in?an?aiff,?wav,?or?caf?file.?Because?they?are?played?by?the?system-sound?facility,?custom?sounds?must?be?in?one?of?the?following?audio?data?formats:

Linear?PCM

MA4?(IMA/ADPCM)

uLaw

aLaw

Place?custom?sound?files?in?your?app?bundle?or?in?the?Library/Sounds?folder?of?your?app’s?container?directory.?Custom?sounds?must?be?under?30?seconds?when?played.?If?a?custom?sound?is?over?that?limit,?the?default?system?sound?is?played?instead.

可以看出,小米只是照搬了Apple的說明而已,畢竟所有集成iOS消息推送的第三方推送都是靠蘋果的APNS吃飯而已(再套一層殼)。

在原生iOS開發中,要添加聲音資源,必須把這些資源添加到app bundle中,實現方法有二:

方法1、項目設置中 Build Phases ->Copy Bundle Resources 中添加聲音文件。

方法2、采用 “Add Files to xx(project name)”的方式將對應的聲音文件夾添加到工程里面。

還要滿足下述條件:

1.音頻文件格式: .aiff 、.wav 、.caf ;

2.自定義音頻文件位置:App bundle 或者 Library/Sounds 文件夾下;

3.自定義音頻時長:不超過30s,過長會被默認音替代;

4.服務器端的Sound字段:需要同App內的音頻文件名字相同,帶上后綴名(例如:sub.caf)。

好,回到正題,我們手里已經拿到了.ipa文件包,如何實現消息推送時的自定義鈴聲呢?

首先,我們明確.ipa包其實本質上是zip壓縮包而已,我們把后綴改成.zip,就可以打開查看里面的目錄結構 Payload/DCloud_Pandora.app/:

_CodeSignature 文件夾存放的是簽名文件信息,所有的文件都會進行簽名,所以如果你直接修改里面的任意一個文件都會導致簽名校驗失敗,從而不能安裝;

embedded.mobileprovision 文件是從apple官網上下載下來的發布描述文件。

那么,我們現在要增加聲音文件到這個包里,勢必會破壞上面的簽名,所以在添加了聲音等資源文件之后,我們必須要重新簽名,下面跟著飄易走一遍流程吧(注意下面的操作都是在MAC OSX系統里):

正確的解鎖姿勢來啦(請先確保 OSX系統 & XCODE & Hbuilder 都是最新版本):

1、解壓unzip?Demo.ipa

得到Payload文件夾,里面有DCloud_Pandora.app包,右鍵顯示包內容,可以增刪改里面的資源文件,這里我們就增加幾個音頻文件,比如 message1.caf、message2.caf、message3.caf 等。

2、刪除簽名文件夾?_CodeSignature(可選,不刪除后面簽名時強制覆蓋即可)rm?-rf?Payload/DCloud_Pandora.app/_CodeSignature/

3、替換證書描述文件(可選,如果是自己的app,描述文件沒有改變可以不替換):cp?embedded.mobileprovision?Payload/DCloud_Pandora.app

注意,該?embedded.mobileprovision 文件就是我們從蘋果開發者中心下載下來的描述文件。

4、OSX系統里重新簽名(關鍵一步):codesign?-f?-s?"iPhone?Distribution:?company?name?(5BF53xxxxx)"?--entitlements?entitlements.plist?Payload/DCloud_Pandora.app

注意,發布證書需要替換成自己的,company name 和?5BF53xxxxx 改成自己的證書信息,這個證書信息在OSX系統里的 鑰匙串 里查找;entitlements.plist這個文件怎么來的,其實就是從第3步里提到的描述文件里導出來的,具體的飄易下面講。

驗證簽名后的.app文件codesign?--verify?Payload/DCloud_Pandora.app

如果沒有任何輸出信息,代表沒有問題。

5、重新打包:zip?-r?new.ipa?Payload

好了,到這里我們就得到新的.ipa包了,可以拿這個包去app store 重新上架了。

剩下的事情就是服務器端發送消息推送的時候,指明用哪個聲音文件即可:<?php

public?function?iOS_message($msg_title,?$msg_content,?$badge=''){

//消息對象

$message?=?new?IOSBuilder();

$message->title($msg_title);//標題

$message->description($msg_content);//內容

$message->body($msg_content);//內容,會覆蓋description

$message->soundUrl('shaking.caf');

if(!empty($badge))?$message->badge($badge);//自定義通知數字角標

$message->build();

//返回

return?$message;

}

上面重新簽名的過程中可能涉及到的幾個知識點:

1、查看.app的相關信息codesign?-vv?-d?Test.app

2、調用xcode查看或修改info.plist:open?Payload/xxx.app/info.plist

注意修改Bundle identifier后的弊端是第三方sdk失效,比如不能進行微博登錄,不能收到推送等等。

3、查看.mobileprovision文件內部信息:security?cms?-D?-i?example.mobileprovision

或者從.app包里查看:codesign?-d?--entitlements?-?Test.app

4、從.mobileprovision文件里面直接導出entitlements.plist:/usr/libexec/PlistBuddy?-x?-c?"print:Entitlements"?/dev/stdin?<<?entitlements.plist

entitlements.plist文件里面的內容參考:<?xml ?version="1.0"?encoding="UTF-8"?>

plist?PUBLIC?"-//Apple//DTD?PLIST?1.0//EN"?"http://www.apple.com/DTDs/PropertyList-1.0.dtd">

application-identifier

【Prefix】.【bundleID】

aps-environment

production

beta-reports-active

com.apple.developer.team-identifier

【Prefix】

get-task-allow

keychain-access-groups

【Prefix】.*

注意,【Prefix】 替換成你自己app的,【bundleID】是打包的app id。

5、早期的簽名codesign有一個參數叫:--resource-rules Payload/xxx.app/ResourceRules.plist

在OSX 10.10的版本及更高的版本上會提示你已棄用:Warning:?--resource-rules?has?been?deprecated?in?Mac?OS?X?>=?10.10!

6、如何導出iOS支持的音頻格式?.aiff 、.wav 、.caf

MAC提供了一個工具 :afconvert

比如, 把16位的PCM 格式的音頻sub.aiff 轉換成數據類型為 IMA4的后綴為.caf的文件,終端里執行下面的命令即可:afconvert?sub.aiff?sub.caf?-d?ima4?-f?caff?-v

mp3轉成caf:afconvert?sub.mp3?sub.caf?-d?ima4?-f?caff?-v

根據飄易的測試,caf后綴的音頻文件比wav和aiff的都要小一點。

更多的幫助,查看支持的格式:afconvert?-hf

【參考】:

總結

以上是生活随笔為你收集整理的小米 app消息推送服务器,APP使用小米消息推送自定义铃声iOS版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。