1. 程式人生 > >在apiCloud上如何使用極光推送(ajpush)功能

在apiCloud上如何使用極光推送(ajpush)功能

首先在極光推送推送官網,繫結app專案。


安卓只需要繫結應用包名,ios需要生成推送證書做繫結。具體極光推送官網有詳細步驟。在繫結專案後,會生成AppKey和Master Secret

完成上面的步驟,極光官網的操作就結束了。

下面進行apiCloud的操作:首先,新增ajpush模組,並在congfig.xml檔案中新增程式碼 

 <feature name="ajpush">
    <param name="app_key" value="極光推送的AppKey"/>
    <param name="channel" value="極光推送的Master Secret"/>
  </feature>

然後在config.xml設定的起始頁中,寫入相應程式碼,具體可看ajpush模組,需要注意的是,安卓需要執行init()方法,ios會自動初始化。若是需要增加語音推送功能,安卓可以把語音播放功能放在初始化方法中。

最後進行後端的編碼:我使用的是java後端程式碼,先匯入jar包 

下面是具體的程式碼:

  • public class UserJpush {
    
        private static final Logger log = LoggerFactory.getLogger(UserJpush.class);
        private static final String APPKEY 
    =""; private static final String MASTERSECRET = ""; public static final String TITLE = "申通快遞"; public static final String ALERT = "祝大家新春快樂12"; public static final String MSG_CONTENT = "申通快遞祝新老客戶新春快樂1"; public static final String TAG = "tag_api"; public static JPushClient jpushClient
    =null; @SuppressWarnings("deprecation") public static void sendPush(String title,String message,String reader) { sendPush(title,message,reader,null,null,null,null); } /** * * @param title 推送主題 * @param message 推送的文字訊息 * @param reader 接收推送人 * @param jump2name 點選推送時跳轉的頁面名稱 * @param jump2url 點選推送時跳轉的頁面地址 * @param jump2menu 底部導航欄第幾個*/ @SuppressWarnings("deprecation") public static void sendPush(String title,String message,String reader,String jump2name,String jump2url,String jump2menu,String type) { jpushClient = new JPushClient(MASTERSECRET, APPKEY, 3); PushPayload payload=buildPushObject_android_and_ios(title,message,reader,jump2name,jump2url,jump2menu,type); // PushPayload payload = buildPushObject_all_alias_alert(); try { System.out.println(payload.toString()); PushResult result = jpushClient.sendPush(payload); System.out.println(result+"................................"); log.info("Got result - " + result); } catch (APIConnectionException e) { log.error("Connection error. Should retry later. ", e); } catch (APIRequestException e) { log.error("Error response from JPush server. Should review and fix it. ", e); log.info("HTTP Status: " + e.getStatus()); log.info("Error Code: " + e.getErrorCode()); log.info("Error Message: " + e.getErrorMessage()); log.info("Msg ID: " + e.getMsgId()); } } public static PushPayload buildPushObject_all_all_alert() { return PushPayload.alertAll(ALERT); } public static PushPayload buildPushObject_all_alias_alert() { boolean writeable = true; return PushPayload.newBuilder() .setPlatform(Platform.all())//設定接受的平臺 .setAudience(Audience.all())//Audience設定為all,說明採用廣播方式推送,所有使用者都可以接收到 // .setOptions(apns_production :true) .setOptions(Options.newBuilder().setApnsProduction(writeable).build()) .setNotification(Notification.alert(ALERT)) .build(); } public static PushPayload buildPushObject_android_tag_alertWithTitle() { return PushPayload.newBuilder() .setPlatform(Platform.android()) .setNotification(Notification.android(ALERT, TITLE, null)) // .setAudience(Audience.alias("18888888888")) // .setAudience(Audience.all()) .build(); } public static PushPayload buildPushObject_android_and_ios(String title, String message, String reader, String jump2name, String jump2url, String jump2menu, String type) { boolean available = true; Map<String,String> extras = new HashMap<>(); extras.put("jump2name", jump2name); extras.put("jump2url", jump2url); extras.put("jump2menu", jump2menu); extras.put("type",type); return PushPayload.newBuilder() .setPlatform(Platform.android_ios()) // .setAudience(Audience.all()) .setAudience(Audience.alias(StrUtils.isNotBlank(reader)?reader:"18888888888")) .setMessage(Message.newBuilder().addExtra("type", type) .setMsgContent(MSG_CONTENT) .build()) .setOptions(Options.newBuilder().setTimeToLive(864000L).build() )//離線訊息保留時長 最長10.setOptions(Options.newBuilder().setApnsProduction(available).build()) //正式環境還是開發環境(正式:true,開發:false.setNotification(Notification.newBuilder() .setAlert(StrUtils.isBlank(message)?"您有新的訊息,請檢視":message) .addPlatformNotification(AndroidNotification.newBuilder() .setTitle(StrUtils.isBlank(title)?"訊息提醒":title) .addExtras(extras) .build()) .addPlatformNotification(IosNotification.newBuilder() .incrBadge(1) .addExtras(extras) .setSound("widget/test.wav") //ios獨有的聲音屬性,替換推送通知聲音。 .build()) .build()) .build(); } public static PushPayload buildPushObject_ios_tagAnd_alertWithExtrasAndMessage() { return PushPayload.newBuilder() .setPlatform(Platform.ios()) .setAudience(Audience.tag_and("tag1", "tag_all")) .setNotification(Notification.newBuilder() .addPlatformNotification(IosNotification.newBuilder() .setAlert(ALERT) .setBadge(5) .setSound("happy") .addExtra("from", "JPush") .build()) .build()) .setMessage(Message.content(MSG_CONTENT)) .setOptions(Options.newBuilder() .setApnsProduction(true) .build()) .build(); } public static PushPayload buildPushObject_ios_audienceMore_messageWithExtras() { return PushPayload.newBuilder() .setPlatform(Platform.android_ios()) .setAudience(Audience.newBuilder() .addAudienceTarget(AudienceTarget.tag("tag1", "tag2")) .addAudienceTarget(AudienceTarget.alias("alias1", "alias2")) .build()) .setMessage(Message.newBuilder() .setMsgContent(MSG_CONTENT) .addExtra("from", "JPush") .build()) .build(); }
注意:在極光官網繫結app專案後,先進行推送自測,可以選擇廣播的形式,確認能夠推送在進行下面的操作。 apicloud繫結模組時,綁定了ajpush後,不要繫結push模組,以免模組衝突。 增加制定推送聲音,安卓和ios的原理不同。ios通過替換推送聲音的方式,通過
 .setSound("widget/test.wav")設定。