導航:首頁 > 編程語言 > iosapnsjava後台

iosapnsjava後台

發布時間:2023-07-09 11:55:08

1. 蘋果apns java怎麼推送

import java.io.InputStream;
import java.util.List;

import com.dbay.apns4j.IApnsService;
import com.dbay.apns4j.impl.ApnsServiceImpl;
import com.dbay.apns4j.model.ApnsConfig;
import com.dbay.apns4j.model.Feedback;
import com.dbay.apns4j.model.Payload;

/**
* @author RamosLi
*
*/
public class Apns4jDemo {
private static IApnsService apnsService;

private static IApnsService getApnsService() {
if (apnsService == null) {
ApnsConfig config = new ApnsConfig();
InputStream is = Apns4jDemo.class.getClassLoader().getResourceAsStream("Certificate.p12");
config.setKeyStore(is);
config.setDevEnv(false);
config.setPassword("123123");
config.setPoolSize(5);
apnsService = ApnsServiceImpl.createInstance(config);
}
return apnsService;
}

public static void main(String[] args) {
IApnsService service = getApnsService();

// send notification
String token = "";

Payload payload = new Payload();
payload.setAlert("How are you?");
// If this property is absent, the badge is not changed. To remove the badge, set the value of this property to 0
payload.setBadge(1);
// set sound null, the music won't be played
// payload.setSound(null);
payload.setSound("msg.mp3");
payload.addParam("uid", 123456);
payload.addParam("type", 12);
service.sendNotification(token, payload);

// payload, use loc string
Payload payload2 = new Payload();
payload2.setBadge(1);
payload2.setAlertLocKey("GAME_PLAY_REQUEST_FORMAT");
payload2.setAlertLocArgs(new String[]{"Jenna", "Frank"});
service.sendNotification(token, payload2);

// get feedback
List<Feedback> list = service.getFeedbacks();
if (list != null && list.size() > 0) {
for (Feedback feedback : list) {
System.out.println(feedback.getDate() + " " + feedback.getToken());
}
}

try {
// sleep 5s.
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}

// It's a good habit to shutdown what you never use
service.shutdown();

// System.exit(0);
}
}
包含推送功能、蘋果的feedback功能,很是實用方便。
對於源碼,我整理成了工程,下載地址為:http://download.csdn.net/detail/linyu19872008/6934361

2. java如何獲取蘋果apns上應用卸載的信息,用戶卸載了軟體後台不知道還在推送消息。

不會有這個現象,蘋果的推送不是伺服器端發送的,而是蘋果伺服器端發送的。看來還不熟悉蘋果APP推送流程。
用戶在初次使用APP時,會被提示是否接受推送信息,如果接受,APP的伺服器端會獲得一個APP傳回來的token;
APP伺服器端再把這個token連同推送消息一起發送給蘋果伺服器端;蘋果伺服器端識別這個token後,就會向用戶的手機發送推送消息;當APP卸載後,這個token也就失效了,也就無法推送了。

3. jpush推送java後台怎麼調用

開發的時候需要引用appache的包commons-httpclient.jar 、commons-codec.jar、commons-logging.jar這些包可以到官網上下載,如果有需要的話也我也可以發給你。
引入上述這些包之後,就可以進行開發了。
這里需要特別說明的兩點是:
1、通過 HttpClient client = new DefaultHttpClient(); 獲得HttpClient對象不支持https,需要自己重寫。
2、我們的MD5編碼要和伺服器那邊的一樣。(我用我自己寫的MD5編碼驗證的時候,總是驗證失敗,後來跟他們的技術人員要了他們的md5的實現方式就通過驗證了)

好了,廢話不多說了,接下來是貼代碼的時候了:
類MySSLSocketFactory用來實現對https的支持

[java] view plain
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.conn.ssl.SSLSocketFactory;

public class MySSLSocketFactory extends SSLSocketFactory {

SSLContext sslContext = SSLContext.getInstance("TLS");

public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);

TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}

public X509Certificate[] getAcceptedIssuers() {
return null;
}
};

sslContext.init(null, new TrustManager[] { tm }, null);
}

@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
}

@Override
public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
}

}

類ClientUtil 獲取可以支持https的HttpClient對象,調用MySSLSocketFactory 來取得

[java] view plain
import java.security.KeyStore;

import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
public class ClientUtil {

public static HttpClient getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);

SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));

ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
e.printStackTrace();
return new DefaultHttpClient();
}
}

}

接下來就是調用JPush的api來推送消息了

[java] view plain
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

/**
* 調用遠程api實現推送
* @author naiyu
*
*/
public class PushMsgUtil {

// public static final String PUSH_URL = "https://api.jpush.cn:443/sendmsg/sendmsg";
public static final String PUSH_URL = "http://api.jpush.cn:8800/sendmsg/sendmsg";

public static void pushMsg(String msg) {
BasicNameValuePair name = new BasicNameValuePair("username", "test"); //用戶名
BasicNameValuePair sendno = new BasicNameValuePair("sendno", "3621"); // 發送編號。由開發者自己維護,標識一次發送請求
BasicNameValuePair appkeys = new BasicNameValuePair("appkeys", "your appkeys"); // 待發送的應用程序(appKey),只能填一個。
BasicNameValuePair receiver_type = new BasicNameValuePair("receiver_type", "4");
//驗證串,用於校驗發送的合法性。
BasicNameValuePair verification_code = new BasicNameValuePair("verification_code", getVerificationCode());
//發送消息的類型:1 通知 2 自定義
BasicNameValuePair msg_type = new BasicNameValuePair("msg_type", "1");
BasicNameValuePair msg_content = new BasicNameValuePair("msg_content", msg);
//目標用戶終端手機的平台類型,如: android, ios 多個請使用逗號分隔。
BasicNameValuePair platform = new BasicNameValuePair("platform", "android");
List<BasicNameValuePair> datas = new ArrayList<BasicNameValuePair>();
datas.add(name);
datas.add(sendno);
datas.add(appkeys);
datas.add(receiver_type);
datas.add(verification_code);
datas.add(msg_type);
datas.add(msg_content);
datas.add(platform);
try {
HttpEntity entity = new UrlEncodedFormEntity(datas, "utf-8");
HttpPost post = new HttpPost(PUSH_URL);
post.setEntity(entity);
HttpClient client = ClientUtil.getNewHttpClient();
HttpResponse reponse = client.execute(post);
HttpEntity resEntity = reponse.getEntity();
System.out.println(EntityUtils.toString(resEntity));
} catch (Exception ex) {
ex.printStackTrace();
}

}

private static String getVerificationCode() {

String username = "test"; //username 是開發者Portal帳戶的登錄帳戶名
String password = "pasword";
int sendno = 3621;
int receiverType = 4;
String md5Password = StringUtils.toMD5(password);; //password 是開發者Portal帳戶的登錄密碼

String input = username + sendno + receiverType + md5Password;
String verificationCode = StringUtils.toMD5(input);
return verificationCode;
}

public static void main(String[] args) {
String msg = "{\"n_title\":\"來點外賣\",\"n_content\":\"你好\"}";
System.out.println(msg);
PushMsgUtil.pushMsg(msg);
}

}

4. 蘋果官方有沒有關於 java 推送到 apns文檔

直接給你代碼參考吧

publicstaticvoidmain(String[]args)throwsException
{
try
{
//從客戶端獲取的deviceToken,在此為了測試簡單,寫固定的一個測試設備標識。
StringdeviceToken=""
System.out.println("PushStartdeviceToken:"+deviceToken);
//定義消息模式
PayLoadpayLoad=newPayLoad();
payLoad.addAlert("thisistest!");
payLoad.addBadge(1);//消息推送標記數,小紅圈中顯示的數字。
payLoad.addSound("default");
//注冊deviceToken
=PushNotificationManager.getInstance();
pushManager.addDevice("iPhone",deviceToken);
//連接APNS
Stringhost="gateway.sandbox.push.apple.com";
//Stringhost="gateway.push.apple.com";
intport=2195;
StringcertificatePath="c:/PushTest.p12";//前面生成的用於JAVA後台連接APNS服務的*.p12文件位置
StringcertificatePassword="123456";//p12文件密碼。
pushManager.initializeConnection(host,port,certificatePath,certificatePassword,SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
//發送推送
Deviceclient=pushManager.getDevice("iPhone");
System.out.println("推送消息:"+client.getToken()+" "+payLoad.toString()+"");
pushManager.sendNotification(client,payLoad);
//停止連接APNS
pushManager.stopConnection();
//刪除deviceToken
pushManager.removeDevice("iPhone");
System.out.println("PushEnd");
}
catch(Exceptionex)
{
ex.printStackTrace();
}
}
}

5. java後台極光推送最新版 ios 怎麼指定證書環境

創建應用程序ID
登陸 iOS Dev Center 選擇進入iOS Provisioning Portal。
在 iOS Provisioning Portal中,點擊App IDs進入App ID列表。

創建 App ID,如果 ID 已經存在可以直接跳過此步驟

為 App 開啟 Push Notification 功能。如果是已經創建的 App ID 也可以通過設置開啟 Push Notification 功能。

根據實際情況完善 App ID 信息並提交,注意此處需要指定具體的 Bundle ID 不要使用通配符。

配置和下載證書
如果你之前沒有創建過 Push 證書或者是要重新創建一個新的,請在證書列表下面新建。

新建證書需要注意選擇證書種類(開發證書用於開發和調試使用,生產證書用於 App Store 發布)

點擊 Continue 後選擇證書對應的應用ID,然後繼續會出現「About Creating a Certificate Signing Request (CSR)」。

根據它的說明創建打開KeychainAccess 創建 Certificate Signing Request。

填寫「User Email Address」和「Common Name」 後選擇 Saved to disk 進行保存 。

繼續返回Apple developer 網站點擊 Continue ,上傳剛剛生成的 .certSigningRequest 文件生成 APNs Push Certificate。
下載並雙擊打開證書,證書打開時會啟動「鑰匙串訪問」工具
在「鑰匙串訪問」中你的證書會顯示在「我的證書」中,注意選擇「My Certificates」 和"login"

導出 .p12 證書文件
在「鑰匙串訪問」中,選擇剛剛加進來的證書,選擇右鍵菜單中的「導出「...」」。

注意要選「login」和「My Certificates」 導出證書時要選中證書文件,不要展開private key。

將文件保存為Personal Information Exchange (.p12)格式。

保存p12文件時,可以為其設置密碼,也可以讓密碼為空。
上傳證書
在 JPush 管理 Portal 上,針對某應用程序,上傳上面步驟得到 .p12 證書文件。這是 iOS SDK 能夠接收到 JPush 推送消息的必要步驟。

閱讀全文

與iosapnsjava後台相關的資料

熱點內容
網路評選一般有哪些 瀏覽:476
2021三支一扶報名數據在哪裡看 瀏覽:914
網路未備案怎麼打得開 瀏覽:987
計算機程序用什麼編程語言 瀏覽:324
linux入門常用命令 瀏覽:497
江寧區哪裡有數控編程培訓 瀏覽:778
java寫一個shape形狀類 瀏覽:744
win7如何設置word背景顏色 瀏覽:484
如何創造電腦編程語言 瀏覽:56
昂達平板電腦圖形密碼忘記怎麼辦 瀏覽:92
組織文件內容是什麼 瀏覽:183
0基礎如何學習智能編程 瀏覽:366
java程序員全攻略下載 瀏覽:715
網路逆向教程 瀏覽:135
iso文件如何重裝系統 瀏覽:750
ghost鏡像文件路徑如何恢復 瀏覽:832
搭建網站需要多少錢啊 瀏覽:599
編程貓怎麼設置背景亮度 瀏覽:177
qq文件破損 瀏覽:414
javapoi配置 瀏覽:608

友情鏈接