天天看點

hubilder打包+C#服務端個推服務實作

關于推送鼓搗了好長時間,這裡不再寫helloworld了,隻講裡面遇到的問題。

1.關于蘋果開發者平台上的注冊

網上很多的教程,隻要按照步驟來設定就行了,在

iOS證書(.p12)和描述檔案(.mobileprovision)申請

 這篇文章裡面講的很清楚,文章中也說明了,如果要使用推送功能,那麼在申請AppID的時候要選擇“Push Notifications”這個選項。這篇文章說的很詳細,總結下來有下面幾點内容

1.申請蘋果AppID,一個App裡的證書都基于這個AppID

2.生成證書請求檔案,這個檔案必須在蘋果電腦上生成,檔案的字尾是.certSigningRequest,後面要用它來生成證書檔案,就是用CertificateSigningRequest.certSigningRequest檔案生成ios_development.cer檔案

3.生成開發證書,這裡就是要生成ios_development.cer檔案,然後再那這個檔案在蘋果電腦上Kenchain Access中導出.p12證書檔案

4.添加調試裝置,這個主要是把測試收集到UUID添加到開發者平台的Devices清單裡面,後面生成證書描述檔案的時候用到這些裝置

5.申請開發(Development)描述檔案,這裡要選擇前面的AppID,選擇添加的裝置,最後生成了一個development.mobileprovision檔案

6.生成釋出證書,這個主要是為了上架,和步驟3唯一差別是選擇的類型不一樣,前者是Development下面的IOS App Development,後者是Production下的App Store and Ad Hot,同樣要選擇步驟1生成的AppID,但是這裡不用選擇裝置,都上架了,還選擇裝置就不對了。

需要說明的是這篇文章寫的不嚴謹,在建立appid的時候“在“Explicit App ID”欄下的“Bundle ID”項中輸入App ID(使用反向域名格式字元串,如“io.dcloud.HBuilderApp”):”在“申請開發(Development)證書和描述檔案”和“申請釋出(Distribution)證書和描述文”的時候樓主寫到:“點選“Continue”按鈕,打開“App ID”選擇頁面,選擇要使用的“App ID”(如之前建立的“io.dcloud.HBuildApp”),點選“Continue”:” io.dcloud.HBuilderApp 和 io.dcloud.HBuildApp明顯不一樣,他們是一回事,不要受它蠱惑。

hubilder打包+C#服務端個推服務實作
hubilder打包+C#服務端個推服務實作

需要說明的是這篇文章隻字不提如何生成推送證書,雖然在步驟1生成AppID的時候提示你選擇推送功能,但是還需要生成一個推送證書上傳到個推平台上,通篇文章都沒有提到。

2.生成推送證書

上面的問題可以在個推開發者平台上找到答案,

蘋果 APNs 配置 , 這裡也講到了建立蘋果App ID,這個和上面第一布生成的那個App ID是一回事,不要重複生成,也說了要選中Push Notifications,在第二個環節裡面講到了要建立APNs Push證書,這個很關鍵,他和上面生成釋出證書類似,它也要用到CertificateSigningRequest.certSigningRequest檔案生成ios_push_development.cer這個檔案,再用這個檔案導出ios_push_development.p12證書檔案,最後把這個證書上傳到個推應用平台上。如下圖:
hubilder打包+C#服務端個推服務實作

注意這篇文章第三個步驟“Provisioning Profile檔案的建立”很有蠱惑性,上來就來一句“建立一個 com.igexin.getui.demo AppID,并為此AppID配置 Push Notifications”,不要被它迷惑就是上面的步驟1,剩下的步驟和上面的步驟5:“申請開發(Development)描述檔案”沒啥差別。總之對一個app來說隻要用到AppID,都是同一個。

3.關于平台配置

這裡沒啥說的,在個推平台上配置一個應用之後把個推的appid,appkey,appsecret填到hbuilder的manifest.json檔案中即可。

4.關于clientid

剩下的時候就是去個推平台下載下傳了一個服務端的Demo,我用的是C#版本的,當你實驗第一個例子的時候有pushMessageToApp()這麼一個方法,這個是發送給某個app,ClientID,注意一定要打包之後擷取這個ClientID,不能在調試狀态下擷取,也就是不能在hbuilder裡面這樣,然後用console.log列印出來在hbuilder裡面複制。

hubilder打包+C#服務端個推服務實作
一定要打包出來用alert彈出來,然後一個一個的敲出來放在C#demo程式裡。如下:
hubilder打包+C#服務端個推服務實作

5.關于發送給特定使用者組

在demo的第一個例子中,手賤把pushMessageToApp()方法體中的

hubilder打包+C#服務端個推服務實作

這一句注釋給打開了,結果死活收不到,注意這個是需要首先用push.setClientTag這個方法設定之後才能按照使用者tags來發送,如果使用者沒有這個tags是不會收到推送的。把這一句注釋掉就好了。

6.關于透傳消息+apns

ios系統好像隻能使用transmissiontemplate模闆+apns推送,是以在建構透傳消息模闆的時候要加上如下一段:

//APN進階推送 開始
            APNPayload apnpayload = new APNPayload();
            DictionaryAlertMsg alertMsg = new DictionaryAlertMsg();
            alertMsg.Body = "Body";
            alertMsg.ActionLocKey = "ActionLocKey";
            alertMsg.LocKey = "LocKey";
            alertMsg.addLocArg("LocArg");
            alertMsg.LaunchImage = "LaunchImage";
            //iOS8.2支援字段
            alertMsg.Title = "Title";
            alertMsg.TitleLocKey = "TitleLocKey";
            alertMsg.addTitleLocArg("TitleLocArg");

            apnpayload.AlertMsg = alertMsg;
            apnpayload.Badge = 10;
            apnpayload.ContentAvailable = 1;
            //apnpayload.Category = "";
            apnpayload.Sound = "test1.wav";
            apnpayload.addCustomMsg("payload", "payload");
            template.setAPNInfo(apnpayload);
            //APN進階推送 結束      

加好之後整個方法長這樣子:

//透傳模闆動作内容
        public static TransmissionTemplate TransmissionTemplateDemo()
        {
            TransmissionTemplate template = new TransmissionTemplate();
            template.AppId = APPID;
            template.AppKey = APPKEY;
            //應用啟動類型,1:強制應用啟動 2:等待應用啟動
            template.TransmissionType = "1";
            //透傳内容  
            template.TransmissionContent = "透傳内容";
            //設定通知定時展示時間,結束時間與開始時間相差需大于6分鐘,消息推送後,用戶端将在指定時間差内展示消息(誤差6分鐘)
            //String begin = "2017-03-13 00:36:10";
            //String end = "2017-03-13 23:46:20";
            //template.setDuration(begin, end);

            //APN進階推送 開始
            APNPayload apnpayload = new APNPayload();
            DictionaryAlertMsg alertMsg = new DictionaryAlertMsg();
            alertMsg.Body = "Body";
            alertMsg.ActionLocKey = "ActionLocKey";
            alertMsg.LocKey = "LocKey";
            alertMsg.addLocArg("LocArg");
            alertMsg.LaunchImage = "LaunchImage";
            //iOS8.2支援字段
            alertMsg.Title = "Title";
            alertMsg.TitleLocKey = "TitleLocKey";
            alertMsg.addTitleLocArg("TitleLocArg");

            apnpayload.AlertMsg = alertMsg;
            apnpayload.Badge = 10;
            apnpayload.ContentAvailable = 1;
            //apnpayload.Category = "";
            apnpayload.Sound = "test1.wav";
            apnpayload.addCustomMsg("payload", "payload");
            template.setAPNInfo(apnpayload);
            //APN進階推送 結束

            return template;
        }      

這一點在個推平台上有介紹,但是有點隐秘 

C# 推送模闆

,截圖如下:

hubilder打包+C#服務端個推服務實作

好了就這麼多,各位大神如果看到那裡有不對的地方希望指出來。謝謝!

作者:

Tyler Ning

出處:

http://www.cnblogs.com/tylerdonet/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過以下郵箱位址

[email protected]

 聯系我,非常感謝。

繼續閱讀