2017-02-23 1 views
0

J'ai créé mon propre framework dans swift en dessous du code de mon framework. quand je passe la valeur ApiID, ApiKey et ApiSecret dans la structure cela fonctionne bien mais je veux passer des valeurs dans mon projet swift mais quand je le fais cela ne fonctionne pas.comment faire passer la valeur dans le projet swift et accéder à la fonction du cadre créé dans swift

public class PushNotification: NSObject { 

var ApiID:Int? 
var ApiKey:String? 
var ApiSecret:String? 

public func didRegisterForRemoteNotificationsWithDeviceToken(deviceToken: Data,apiKey:String,apiSecret:String,apiId:Int) 
{ 
    // Convert Device Token into String 
    let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}) 
      print(deviceTokenString) 

    ApiKey = apiKey 
    ApiSecret = apiSecret 
    ApiID = apiId 
    let AppId = Bundle.main.bundleIdentifier! 

    // Get Unique Device ID 
    let oNSUUID: UUID = UIDevice.current.identifierForVendor! 

    let post: String = "appid=\(AppId)&deviceid=\(deviceTokenString)&ApiID=\(ApiID)&ApiKey=\(ApiKey)&ApiSecret=\(ApiSecret)&os=\("ios")&regId=\(oNSUUID.uuidString)" 

    let postData:Data = post.data(using: String.Encoding.ascii)! 
    let postLength:NSString = String(postData.count) as NSString 
    let urlstring = "https://www.abc.php" 
    let url = URL(string: urlstring) 
    var request = URLRequest(url: url!) 
    request.httpMethod = "POST" 
    request.httpBody = postData 
    request.setValue(postLength as String, forHTTPHeaderField: "Content-Length") 
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
    let connection: NSURLConnection = NSURLConnection(request: request as URLRequest, delegate: self)! 
    connection.start() 
} 

Et ci-dessous est mon code de projet j'ai passé des valeurs dans la classe de délégué de l'application et l'accès dans la fonction ci-dessous.

var APIKEY = "00000" 
var APISECRET = "000000" 
var APIID = 40 

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
print("Device Token \(deviceToken)") 

    let appdetails = PushNotification.init() 
appdetails.didRegisterForRemoteNotificationsWithDeviceToken(deviceToken: deviceToken, apiKey: APIKEY , apiSecret: APISECRET, apiId: APIID) 
} 
+0

essayer 'var utilisation tou publique ...' – PiterPan

+0

J'ai essayé var public, mais sa ne fonctionne pas @ PiterPan –

Répondre

0

J'ai obtenu la solution ci-dessus Que. C'est très simple dans le schéma d'édition> Archive> Post Action. Cliquez sur l'icône +, puis cliquez sur Nouveau script et sélectionnez Run Time vous ciblez puis il suffit de coller ce code dans cette boîte

set -e 
BUILD_INTERMEDIATES="${OBJROOT}" 
BUILD_PRODUCTS="${SYMROOT}/../../../../Products" 
DEVICE_BIN="${BUILD_INTERMEDIATES}/UninstalledProducts/iphoneos/${TARGET_NAME}.framework" 
SIMULATOR_BIN="${BUILD_PRODUCTS}/Debug-iphonesimulator/${TARGET_NAME}.framework" 

ARCHIVE_PATH="${SRCROOT}/_Archive" 
rm -rf "${ARCHIVE_PATH}" 
mkdir "${ARCHIVE_PATH}" 

if [ "${CONFIGURATION}" = "Release" ]; then 
if [ -d "${DEVICE_BIN}" ]; then 
DEVICE_PATH="${ARCHIVE_PATH}/Release" 
mkdir "${DEVICE_PATH}" 
cp -r "${DEVICE_BIN}" "${DEVICE_PATH}" 
fi 

if [ -d "${SIMULATOR_BIN}" ]; then 
SIMULATOR_PATH="${ARCHIVE_PATH}/Debug" 
mkdir "${SIMULATOR_PATH}" 
cp -r "${SIMULATOR_BIN}" "${SIMULATOR_PATH}" 
lipo -create "${DEVICE_BIN}/${TARGET_NAME}" "${SIMULATOR_BIN}/${TARGET_NAME}" -output "${SIMULATOR_PATH}/${TARGET_NAME}.framework/${TARGET_NAME}" 
fi 
fi 

exit 0;