遠程推送

當服務端遠程向APNS推送至一臺離線的設備時,蘋果服務器Qos組件會自動保留一份最新的通知,等設備上線后,Qos將把推送發送到目標設備上

遠程推送的基本過程

1、客戶端的app需要將用戶的UDID和app的bundleID發送給apns服務器,進行注冊,apns將加密后的device Token返回給app
2、app獲得device Token后,上傳到公司服務器
3、當需要推送通知時,公司服務器會將推送內容和device Token一起發給apns服務器
4、apns再將推送內容送到客戶端上

創建證書的流程:

1、打開鑰匙串,生成CertificateSigningRequest.certSigningRequest文件
2、將CertificateSigningRequest.certSigningRequest上傳進developer,導出.cer文件
3、利用CSR導出P12文件
4、需要準備下設備token值(無空格)
5、使用OpenSSL合成服務器所使用的推送證書

本地app代碼參考

1、注冊遠程通知

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions//中注冊遠程通知
    {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    }

2、實現幾個代理方法:

zterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//獲取設備的deviceToken唯一編號
NSLog(@"deviceToken=%@",deviceToken);
NSString *realDeviceToken=[NSString stringWithFormat:@"%@",deviceToken];
//去除<>
realDeviceToken = [realDeviceToken stringByReplacingOccurrencesOfString:@"<" withString:@""];
realDeviceToken = [realDeviceToken stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"realDeviceToken=%@",realDeviceToken);
[[NSUserDefaults standardUserDefaults] setValue:realDeviceToken forKey:@"DeviceToken"]; //要發送給服務器
}

//獲取令牌出錯
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
//注冊遠程通知設備出錯
NSLog(@"RegisterForRemoteNotification error=%@",error);
}
//在應用在前臺時受到消息調用
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//打印推送的消息
NSLog(@"%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]):
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容