最近項(xiàng)目要接友盟的ios端推送,所以記錄下坑點(diǎn)
1.參考的一些博主的步驟
2.坑點(diǎn)先說明
1.SDK下載 選消息推送??ios文檔
2.有四個文件夾
3.這個四個文件夾加入xcode的frameworks 這個怎么加看上面的鏈接 里面寫的很清楚,還有一些.tbd文件也要加,這些步驟按文檔即可
4.坑點(diǎn).由于我們是jenkins自動化出包,所以我一般習(xí)慣windows上提交這些文件,但是!!!!需要記住的是這四個一定在ios端提交svn,如果在windows下,里面headers文件中 link會掉,就會導(dǎo)致在import的時候 not found各種.h文件
5.打ipa的時候報了個錯"bulk_unityengine.vrmodule_o.cpp"not found.這就是個vr模塊,我們項(xiàng)目中沒用過,但是不知道為什么要報這個錯,友盟sdk中引用了,經(jīng)查是代碼裁剪導(dǎo)致沒有引用
XR:VRModule可能在使用啟用了“Strip Engine Code”的IL2CPP時被剝離,導(dǎo)致構(gòu)建不進(jìn)入VR模式愧沟。有關(guān)如何解決此問題的詳細(xì)信息瘤袖,請參閱https://forum.unity.com/threads/2018-1-il2cpp-vrmodule-stripping-issue.528799/。將在2018.1發(fā)布后解決
解決方案
6.在unityPlugins中加入需要的橋接文件下載地址?,只需要UMPushSDK.h? UMPushSDK.mm文件即可,其他的xcode里面設(shè)置即可
7.也是狙擊點(diǎn)..導(dǎo)出xcode后 在preprocessor.h文件中??UNITY_USES_REMOTE_NOTIFICATIONS 一定把0改為1,不然didRegisterForRemoteNotificationsWithDeviceToken 這個函數(shù)進(jìn)入不了.
3.xcode代碼
官方出了demo的github,找到對應(yīng).h .mm文件修正增加即可
完成
7月1日更新:
由于推送后面?zhèn)鞯腶pp:目前上傳app后會報2個錯
1.ERROR ITMS-90771: “Missing Info.plist value. The Info.plist key ‘BGTaskSchedulerPermittedIdentifiers’ must contain a list of identifiers used to submit and handle tasks when ‘UIBackgroundModes’ has a value of ‘processing’. For more information, refer to the Information Property List Key Reference at https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html.”
這個錯誤是因?yàn)橥扑鸵黾覷IBackgroundModes和processing選項(xiàng),需要在plist中增加"BGTaskSchedulerPermittedIdentifiers" 相關(guān),由于我們是unity自動化,所以c#代碼為
private static void ModifyPush(XcodeProjSet setting, PlistDocument plist)
{
var urlArray = plist.root.CreateArray("BGTaskSchedulerPermittedIdentifiers");
urlArray.AddString(setting.boundleId);
}
非自動化手動在info.plist中增加??<string> 包名 </string>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>????
<string>com.yourCompanyName.appName</string>
</array>
2.ERROR ITMS-90339: "This bundle is invalid. The Info.plist contains an invalid key 'UIApplicationExitsOnSuspend......
解決辦法 刪掉info.plist 中UIApplicationExitsOnSuspend即可
一些自動化的問題? :鏈接
友盟后臺token獲得 在代碼里面加上對應(yīng)語句即可
和服務(wù)器交互的時候我們會給服務(wù)器發(fā)送設(shè)備ID,友盟提供了此接口的,就是
static extern void GetTag_iOS(TagHandler callback);? //TagHandler為string類型的delegate
但是這方法會有個問題,il2cpp下會報一個?MonoPInvokeCallback 的特性錯誤
解決辦法就是將TagHandler 加入此特性
友盟這個坑貨其實(shí)沒有提供返回設(shè)備ID的方法 哎, 自己加了個
c#聲明個方法調(diào)用oc的,原理怎么就不討論,給結(jié)果
[DllImport("__Internal")]
static extern string GetCId();
OC:那邊實(shí)現(xiàn)