日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

激光推送

發(fā)布時(shí)間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 激光推送 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一步:先在開發(fā)者賬號(hào)創(chuàng)建app id,即創(chuàng)建應(yīng)用程序ID

  • ?登陸?蘋果開發(fā)者網(wǎng)站?進(jìn)入開發(fā)者賬戶。
  •   2、從開發(fā)者賬戶頁面左側(cè)入口進(jìn)入“Certificates, IDs & Profiles” 頁面。?

      3、創(chuàng)建 App ID,填寫 App ID 的 Name 和 Bundle ID(? ?注: 此處需要指定具體的 Bundle ID 不要使用通配符)。?

      4、為 App 開啟 Push Notification 功能。如果是已經(jīng)創(chuàng)建的 App ID 也可以通過設(shè)置開啟 Push Notification 功能。?

    ?  5、填寫好以上屬性后,點(diǎn)擊 “Continue”,確認(rèn) AppId 屬性的正確性,點(diǎn)擊 “Register”,注冊(cè) AppId 成功。

    第二步 配置證書,包括開發(fā)證書和生產(chǎn)證書兩個(gè)證書

    簡述極光推送證書的基本生成流程,兩者都為導(dǎo)出的p12文件

    ?

    開發(fā)證書的詳細(xì)步驟:

      1、開發(fā)證書的生成(注意選擇的Development)。?

      2、點(diǎn)擊continue,來到選擇App ID界面。?

      3、說明讓上傳自己的CSR文件,continue...?

      4、上傳請(qǐng)求生成的CSR文件,continue...?

      5、打開系統(tǒng)自帶的 “鑰匙串訪問” 創(chuàng)建 Certificate Signing Request。如下圖操作:?

      6、填寫“用戶郵箱”和“常用名稱” ,并選擇“存儲(chǔ)到磁盤”,證書文件后綴為.certSigningRequest 。

    ?

      7、回到瀏覽器中 CSR 上傳頁面,上傳剛剛生成的后綴為 .certSigningRequest 的文件。?  

      8、生成證書成功后,點(diǎn)擊 “Download” 按鈕把證書下載下來,是后綴為 .cer 的文件(第一個(gè)為“Download”得到的生產(chǎn)開發(fā)證書,第二個(gè)為“Download”得到的開發(fā)證書)。??

      9、雙擊證書后,會(huì)在“KeychainAccess”中打開,選擇左側(cè)“鑰匙串”列表中“登錄”,以及“種類”列表中“我的證書”,找到剛才下載的證書,并導(dǎo)出為 .p12 文件。如下圖:?

    ?

      

    生產(chǎn)證書的詳細(xì)步驟:

      1、注意這里的選擇方式和開發(fā)證書有略微的區(qū)別,選擇Production那一項(xiàng)就好?

      2、以下的步驟略去,和開發(fā)的一樣,到最后下載一下文件,得到下面圖的兩個(gè)文件,雙擊在鑰匙串訪問中可見。

    ?

    最后得到導(dǎo)出的證書(第二個(gè))?

    第三步?把導(dǎo)出的開發(fā)證書和生產(chǎn)證書分別上傳到極光平臺(tái)

      1、在極光控制臺(tái)上,進(jìn)入你應(yīng)用的應(yīng)用設(shè)置中 iOS 的鑒權(quán)方式選擇 “證書”,上傳剛才導(dǎo)出的 .p12 證書。極光會(huì)在后臺(tái)為你的應(yīng)用進(jìn)行鑒權(quán)。

    第四步 集成極光推送SDK,配置工程

    1、導(dǎo)入SDK

    選擇1:Cocoapods導(dǎo)入

    通過Cocoapods下載地址:

    pod 'JPush'

    如果需要安裝指定版本則使用以下方式(以3.0.2版本為例):

    pod 'JPush', '3.0.2'

    選擇2:手動(dòng)導(dǎo)入

    • 在極光官網(wǎng)下載最新 SDK?
    • 將 SDK 包解壓,在 Xcode 中選擇 “Add files to 'Your project name'...”,將解壓后的 lib 子文件夾(包含 JPUSHService.h、jpush-ios-x.x.x.a、jcore-ios-x.x.x.a )添加到你的工程目錄中。
    • 添加 Framework
      • CFNetwork.framework
      • CoreFoundation.framework
      • CoreTelephony.framework
      • SystemConfiguration.framework
      • CoreGraphics.framework
      • Foundation.framework
      • UIKit.framework
      • Security.framework
      • libz.tbd(Xcode 7 以下版本是 libz.dylib)
      • AdSupport.framework(獲取 IDFA 需要;如果不使用 IDFA,請(qǐng)不要添加)
      • UserNotifications.framework(Xcode 8 及以上)
      • libresolv.tbd(JPush 2.2.0 及以上版本需要,Xcode 7 以下版本是 libresolv.dylib)

    注意: 如果集成 JPush 3.0.1 及以上版本, 且同時(shí)集成極光其他 SDK(如:JMessage 3.0.0 及以上版本)?
    1. Cocoapods 導(dǎo)入,建議都更新為線上最新版本,來避免 JCore 版本不一致導(dǎo)致的沖突。?
    2. 手動(dòng)導(dǎo)入,在工程中只需保留一個(gè)最新版本的 jcore-ios-x.x.x.a 靜態(tài)庫文件。

    Build Settings

    如果你的工程需要支持小于 7.0 的 iOS 系統(tǒng),請(qǐng)到 Build Settings 關(guān)閉 bitCode 選項(xiàng),否則將無法正常編譯通過。

    • 設(shè)置 Search Paths 下的 User Header Search Paths 和 Library Search Paths,比如 SDK 文件夾(默認(rèn)為 lib )與工程文件在同一級(jí)目錄下,則都設(shè)置為 "$(SRCROOT)/{靜態(tài)庫所在文件夾名稱}" 即可。

    Capabilities

    如使用 Xcode 8 及以上環(huán)境開發(fā),請(qǐng)開啟 Application Target 的 Capabilities->Push Notifications 選項(xiàng),如圖:?

    允許 Xcode 7 支持 Http 傳輸方法

    如果您使用的是 2.1.9 及以上的版本則不需要配置此步驟??
    如果用的是 Xcode 7 或更新版本,需要在 App 項(xiàng)目的 plist 手動(dòng)配置下 key 和值以支持 http 傳輸:

    選擇1:根據(jù)域名配置

    • 在項(xiàng)目的 info.plist 中添加一個(gè) Key:NSAppTransportSecurity,類型為字典類型。
    • 然后給它添加一個(gè) NSExceptionDomains,類型為字典類型;
    • 把需要的支持的域添加給 NSExceptionDomains。其中 jpush.cn 作為 Key,類型為字典類型。
    • 每個(gè)域下面需要設(shè)置 2 個(gè)屬性:NSIncludesSubdomains、NSExceptionAllowsInsecureHTTPLoads。 兩個(gè)屬性均為 Boolean 類型,值分別為 YES、YES。

    如圖:

    第五步 工程代碼部分

    為 AppDelegate 添加 Delegate。

    參考代碼:

    @interface AppDelegate ()<JPUSHRegisterDelegate>@end

    ?

    在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中添加

    // 1.注冊(cè)系統(tǒng)通知if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]){UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];[application registerUserNotificationSettings:settings];}// 2.注冊(cè)極光推送if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound;[JPUSHService registerForRemoteNotificationConfig:entity delegate:self];}else if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {//可以添加自定義categories[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound |UIUserNotificationTypeAlert)categories:nil];}[JPUSHService setupWithOption:launchOptions appKey:JPushAPPkeychannel:@"Publish channel"apsForProduction:NOadvertisingIdentifier:nil];// 接收應(yīng)用內(nèi)消息NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];[defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];// 極光推送登錄成功后可以注冊(cè)別名[defaultCenter addObserver:self selector:@selector(registerAlias:) name:kJPFNetworkDidLoginNotification object:nil];

    ?

    // 3.注冊(cè) DeviceToken - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {[JPUSHService registerDeviceToken:deviceToken]; }#pragma mark - JPUSHRegisterDelegate // iOS 10 Support,前臺(tái)收到通知,后臺(tái)不會(huì)執(zhí)行這個(gè)方法 - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {// RequiredNSDictionary * userInfo = notification.request.content.userInfo;if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {[JPUSHService handleRemoteNotification:userInfo];}completionHandler(UNNotificationPresentationOptionAlert); // 需要執(zhí)行這個(gè)方法,選擇是否提醒用戶,有Badge、Sound、Alert三種類型可以選擇設(shè)置// 通知內(nèi)容為:notification.request.content.body}// iOS 10 Support,用戶點(diǎn)擊了通知進(jìn)入app - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {// RequiredNSDictionary * userInfo = response.notification.request.content.userInfo;if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {[JPUSHService handleRemoteNotification:userInfo];}//處理推送邏輯completionHandler(); // 系統(tǒng)要求執(zhí)行這個(gè)方法[UIApplication sharedApplication].applicationIconBadgeNumber = 0; }#pragma mark 綁定tag - (void)registerAlias:(NSNotification *)notification{// 注冊(cè)別名 // [JPUSHService setAlias:[NSString stringWithFormat:@"%@",[RYSave account].user_id] callbackSelector:@selector(tagsAliasCallback:tags:alias:) object:self];[JPUSHService setAlias:[NSString stringWithFormat:@"%@",[RYSave account].user_id] completion:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {DLog(@"極光別名注冊(cè)的回調(diào)方法rescode: %ld, \n, \n alias: %@\n", (long)iResCode , iAlias);if (iResCode == 0) {// 注冊(cè)成功}} seq:1]; }// 極光別名注冊(cè)的回調(diào)方法 -(void)tagsAliasCallback:(int)iResCodetags:(NSSet*)tagsalias:(NSString*)alias {DLog(@"極光別名注冊(cè)的回調(diào)方法rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, tags , alias);if (iResCode == 0) {// 注冊(cè)成功} }#pragma mark 解析極光推送的應(yīng)用內(nèi)消息 - (void)networkDidReceiveMessage:(NSNotification *)notification {NSDictionary * userInfo = [notification userInfo];DLog(@"解析極光推送的應(yīng)用內(nèi)消息:%@",userInfo); }// 接收到遠(yuǎn)程通知之后 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {// Required,For systems with less than or equal to iOS6[JPUSHService handleRemoteNotification:userInfo]; }- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {// IOS 7 Support Required[JPUSHService handleRemoteNotification:userInfo];completionHandler(UIBackgroundFetchResultNewData); } //獲取 deviceToken 失敗后 遠(yuǎn)程推送(極光推送)打開失敗 - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {//OptionalDLog(@"獲取 device token 失敗 %@", error); }

    ?綁定別名需要注意的是:在刪除綁定的時(shí)候把用戶唯一標(biāo)示改為空

    [JPUSHService setAlias:[NSString stringWithFormat:@"%@",<#用戶唯一標(biāo)示#> completion:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {DLog(@"極光別名注冊(cè)的回調(diào)方法rescode: %ld, \n, \n alias: %@\n", (long)iResCode , iAlias);if (iResCode == 0) {// 注冊(cè)成功}} seq:1];

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/banwenzheng/p/10007628.html

    總結(jié)

    以上是生活随笔為你收集整理的激光推送的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。